














• ^£5^^^^*^ . o 




^-o.^^' 







• • %/ * 











o ^ c,-^' ,^J 








< ^^0^ f 















"ov* .'^^o*- ''*'*o«' r»^W'-. •'ov*' 





»°-'*. •-. 












^^V.-J,!^^^ .oo^.^^^o ,/\^^/\, , 





V '-^^0^ o 













r. '-n^O^ o. 


















* -y >* "^ 




.'■. O 













A" .,.' 










A' . 






•< '-^^0^ °^^W" -oV^ 























X-^^ 





• ^<J-' 









< o 



,v "<J\ 




.-^^ .. 











*bv" 






^,* 4^ ^.^ '-: 







:. '-^^0^ / 




^ '^bv* :^^^^ '-^0^ r^'^R'". ^ov^' :mm>^\ '-^^.^ 










0^ .1.'^'* "> v' . 











IC 


9062 



Bureau of Mines Information Circular/1986 



Microcomputer-Based Instrumentation 
System for Monitoring Ground Support 
in a Deep Mine Shaft 



By J. K. Whyatt and E. L. Hardin 




UNITED STATES DEPARTMENT OF THE INTERIOR 



'm mmm miimmm mm ii mmiiii i mim mmmm 




Information Circular 9062 

Microcomputer- Based Instrumentation 
System for Monitoring Ground Support 
in a Deep Mine Shaft 

By J. K. Whyatt and E. L. Hardin 




UNITED STATES DEPARTMENT OF THE INTERIOR 
Donald Paul Hodel, Secretary 

BUREAU OF MINES 
Robert C. Horton, Director 



A 






r\0 



^0 




Library of Congress Cataloging in Publication Data: 



Whyatt, J. K. (Jeff K.) 

Microcomputer-based instrumentation system for monitoring ground 
support in a deep mine shaft. 

(Bureau of Mines information circular ; 9062) 

Bibliography: p. 15-16. 

Supt. of Docs, no.: I 28.27: 9062. 

1. Ground control (Mining)— Measurement— Data processing. 2. Rock 
deformation— Idaho— Shoshone County — Data processing. 3. Silver 
mines and mining— Idaho— Shoshone County. 4. Microcomputers— Pro- 
gramming. I. Hardin, Ernest L. II. Title. III. Series: Information 
circular (United States. Bureau of Mines) ; 9062. 



TN295.U4 [TN288] 622s [622'.25] 85-600257 



CONTENTS 



Page 



Abstract 1 

Introduction 2 

Shaft conditions 2 

Ob j ectlves 2 

Acknowledgments 2 

Instrument specification 3 

Closure 3 

Lining pressure 4 

Lining strain 5 

Temperature 6 

Instrument modifications 6 

Extensometers 9 

Pressure cells 10 

Strain gauges 10 

Data acquisition system 10 

Underground subsystem 11 

Surface subsystem 12 

Installation plan 12 

2,414 level 12 

4,063 level 13 

5,191 level 15 

5,955 level 15 

Summary 15 

References 15 

Appendix A. — Instrument calibration 17 

Appendix B . — User ' s guide to MDAP85 20 

Appendix C. — Program listings 33 

ILLUSTRATIONS 

1. Total and measurable rock displacement at the 2,414 level 4 

2. Electrical schematic of the multiple-point borehole extensometer 5 

3. Electrical schematic of the pressure cell 6 

4. Electrical schematic of the concrete embedment strain gauge 7 

5. Electrical schematic of the thermistor 8 

6. Multiple-point borehole extensometer Installation 9 

7. Multiple-point borehole extensometer head protection 9 

8. Encapsulated strain gauge Installation 5,960 level 10 

9. Data acquisition system configuration at the Sliver Shaft 11 

10. Instrument location by level 13 

11. Instrument Installation at the 2,414 and 4,063 levels 14 

A-1. Cast pressure cell 18 

A-2. Pressure cell calibration curves 19 

B-1. System configuration 21 

B-2. Arbiter schematic 22 

B-3 . Program flow chart 23 

B-4. 'ACQUIR' printed output 27 

B-5. 'PRINT' output format 30 

TABLES 

A-1, Pressure cell grout mix 17 

B-1 . Hardware list 22 





UNIT OF 


MEASURE 


ABBREVIATIONS 


USED 


IN THIS REPORT 


op 


degree Fahrenheit 




Si 


ohm 


ft 


foot 






% 


percent 


in 


inch 






psi 


pound per square inch 


kfi 


kilohm 






s 


second 


lb 


pound 






V 


volt 


liF 


microfarad 






V dc 


volt , direct current 


min 


minute 






W 


watt 


mV 


millivolt 






yr 


year 



MICROCOMPUTER-BASED (NSTRUMENTATION SYSTEM FOR MONITORING 
GROUND SUPPORT IN A DEEP MINE SHAFT 

By J. K. Whyatt ^ and E. L. Hardin ^ 



ABSTRACT 

This report describes a microcomputer-based instrumentation system for 
structural monitoring of the circular, concrete-lined Silver Shaft in 
northern Idaho. The 1-ft-thick concrete lining and surrounding rock 
mass were instrumented with a total of 12 multiple-point borehole exten- 
someters, 16 pressure cells, 22 concrete embedment strain gauges, and 
12 thermistors. The instruments were distributed among four test sites 
and installed immediately above the shaft bottom during sinking at the 
2,414, 4,063, 5,191, and 5,955 levels. Limited access to the instru- 
ments prompted the development of a microcomputer-based remote data 
acquisition system that could be operated from the surface. The system 
scanned the instruments on a programmed schedule, printed out reduced 
data, and stored the data for plotting and recall. Data acquisition 
from off-site and uploading of data to mainframe computers were accom- 
plished by the addition of modems to the basic system. The system is 
suitable for use in monitoring the structural behavior of any deep mine 
opening, especially in harsh operating environments and where access is 
limited. 



^Mining engineer, Spokane Research Center, Bureau of Mines, Spokane, WA. 
^Geophysicist, Science Applications Inc., Las Vegas, NV. 



""'"""——"■" 



INTRODUCTION 



Bureau of Mines personnel instrumented 
Hecla's Silver Shaft near Mullan, ID, as 
part of a research program into shaft 
support design. A major task within this 
project was the development of a rugged 
instrumentation and data acquisition 
system for shaft conditions. Instru- 
ments were installed at the 2,414, 4,063, 
5,191, and 5,955 levels in the shaft dur- 
ing sinking over a 3.5-yr period. 

SHAFT CONDITIONS 

Severe time and environmental con- 
straints were major considerations for 
instrumentation system design. The Sil- 
ver Shaft was on the critical path for 
developing new areas of Hecla's Lucky 
Friday Mine, so interference with sinking 
operations had to be held to an absolute 
minimum. Three days were allotted for 
installation at each level, one of which 
was always a holiday. No time was al- 
lowed for in-shaft troubleshooting or 
manual data collection. Shaft environ- 
mental conditions were quite hostile to 
installation and operation of the instru- 
mentation system and included: 

1. Limited access, 

2. Cramped space. 

3. Humidity, 100 pet, 

4. Corrosive, highly conductive water 
inflow. 

5. Rock temperature, 120° F. 

6. Shock and flyrock from blasting. 

7. Mud, dust, and falling debris, 

OBJECTIVES 

The objective of this shaft design re- 
search project was to monitor rock mass 



behavior and the loads induced in the 
concrete lining during and after sinking 
of the Silver Shaft. The data were used 
by Bureau researchers to determine design 
criteria and establish models that pre- 
dict changes in shaft behavior with vari- 
ations in stress field, rock properties, 
and support system. In addition, the 
data collected by the instrument system 
were furnished to the shaft sinking con- 
tractor and mining company for internal 
use. 

Application of ground support design 
experience acquired at other shafts is 
difficult. Differences in rock proper- 
ties, geologic structure, in situ stress 
field, and the proximity of surrounding 
excavations may result in significantly 
different results for similar support 
methods. The Bureau is presently working 
to bridge this gap by developing quanti- 
tative records of shaft performance and 
improved predictive models for designing 
shaft ground support systems. 

In summary, the instrumentation goals 
were as follows: 

1. Provide accurate, timely data on 
rock mass and concrete lining behavior 
for on-site correlation with daily events 
and observations. 

2. Establish a data base that would 
be useful for establishing shaft design 
criteria. 

The main body of this report covers the 
data acquisition system, instrument spec- 
ification, instrument modifications, and 
the installation plan. Instrument cali- 
bration, a program user's guide, and 
software listings are included as ap- 
pendixes. Separate reports cover data 
analysis (1-2).-^ 



ACKNOWLEDGMENTS 



J. R. McVey, supervisory electronics 
technician, and P. A. Edminster, elec- 
tronics technician, of the Bureau's Spo- 
kane Research Center assisted with micro- 
computer and data acquisition hardware 
specification and equipment maintenance. 
R. Muhs , mining engineer, also of Spokane 



Research Center, was the lead on-site 
person for routine data collection activ- 
ities, liaison with Hecla personnel, and 

■^Underlined numbers in parentheses re- 
fer to items in the list of references 
preceding the appendixes. 



equipment operation and maintenance. Mr. 
Pete Boyko, project manager, Hecla Mining 
Co., provided all necessary arrangements 



for use of Hecla facilities and equip- 
ment, and for installation of instruments 
in the shaft. 



INSTRUMENT SPECIFICATION 



Measurements indicative of the behav- 
ior of the supported rock mass , the ef- 
fectiveness of the ground support sys- 
tem, and the design strength safety 
factor of the ground support system were 
needed to meet project goals. Radial 
closure of the shaft was anticipated to 
far exceed any tangential displacement, 
and would provide valuable data for judg- 
ing the stability of the shaft. Elas- 
ticity theory predicts a reduction of 
radial closure rate with continued shaft 
advance; however, if closure accelerated, 
or even failed to slow significantly, the 
concrete lining would be in danger of 
failing. 

The effectiveness of a ground support 
system could be determined by measuring 
the increase in rock mass cohesion and 
the confinement provided at free faces. 
Cohesion of the rock mass is increased 
by installation of bolts that intersect 
planes of weakness and prevent block 
movement. The performance of bolts in 
this manner is hard to measure with 
available instrumentation. A second way 
the bolts provide support is by applying 
confining pressure to free faces. This 
pressure can be determined by measuring 
the tension in individual bolts with 
strain gauges or rock bolt load cells. 
The Silver Shaft utilized Split Set'* and 
grouted rock bolts, which are essentially 
passive, since they require rock movement 
for developing tension. Unfortunately, 
the variability of bolt performance and 
the difficulty in providing survivable 
instruments for the bolts precluded their 
instrumentation. 

The second part of the ground support 
system was the concrete lining installed 
throughout the shaft. The lining pro- 
vided confinement to the rock mass and 

^Reference to specific trade names and 
manufacturers is made for identification 
purposes only and does not imply endorse- 
ment by the Bureau of Mines . 



sealed the surface to prevent rock degra- 
dation and spalling. As with the bolts, 
the lining requires shaft closure for de- 
veloping a support load; however, the 
lining was relatively brittle and could 
rupture if overloaded, a problem not en- 
countered with the bolts. Sampling of 
the hoop (tangential) stress yielded an 
estimate of the support load and strength 
safety factor. 

Thus , the primary measurements sought 
from the Silver Shaft were the radial 
closure of the shaft and the hoop 
stress in the concrete lining. Instru- 
ment specifications required ruggedness, 
dc voltage output compatible with the 
data acquisition system, sensitivity, and 
appropriate operating ranges. 

CLOSURE 

The simplest method of measuring clo- 
sure is with a tape extensometer. This 
method, and any other requiring shaft ac- 
cess or installation of a wire or rod 
across the shaft, were unsuitable because 
of interference with sinking operations. 
Closure was measured indirectly with 
borehole extensometers, which used deep 
anchors as a stable reference. In addi- 
tion to the deep reference and collar an- 
chors, other anchors were installed to 
provide a radial deformation profile of 
each borehole. The profile was useful 
for delineating zones of block movement 
and rock yielding, which are important in 
designing shaft support, as well as for 
confirming the stability of the deepest 
anchor. 

Positioning the deepest anchor and 
specifying the range and accuracy of 
transducers required a prediction of the 
radial displacement as a function of dis- 
tance into the shaft wall and distance to 
the shaft bottom. This estimate was made 
for the first installation with the elas- 
tic solution (3) as follows: 



lUHHUIJHHUHHHIl 



lUAMWUnSBOi 



u. = 



1 - v2 



v(l + v) 



^x "*" ^y 



r + 



^x "*" ^y 



r - 



where 



Up 
Sx 

E 



a = 



r = 



V = 



radial displacement 

maximum horizontal stress 

minimum horizontal stress 

modulus of deformation 

shaft radius (without 
lining) 

radius of depth of interest 

Poisson's ratio 



6 = angle from Sx direction. 

Examination of equation 1 revealed that 
radial deformation would decay rapidly 
with increasing radius. Figure 1 is a 
plot of this behavior for typical 2,414- 
level rock properties and stress field. 
The two curves represent the total and 
measurable elastic deformations. Mea- 
surable deformation is the 10% to 30% of 
the total that occurred after extensom- 
eter installation (4_) . The change in 
displacement with radial distance (i.e., 
slope) approached zero at about 45 ft, or 
twice the unlined shaft diameter of 22 
ft. Thus, for purely elastic behav- 
ior, an anchor at 2 diameters could be 



1 I I r 



1 I \ 1 I I r 

KEY 

■Total elastic displacement 
•Measurable elastic displacement 




J \ \ L 



5 10 15 20 25 30 35 40 45 50 55 60 

DISTANCE, ft 

FIGURE 1. - Total and measurable rock displace- 
ment at the 2,414 level. 



^x ^y 



4a2\ 



r T + — 



■) 



cos 29 



^x ^y 



a'^ 
r^ 



cos 26 



(1) 



considered stable. To be conservative, 
the deep anchor was placed at 55 to 60 
ft, while the intermediate anchors were 
placed at 2, 5, 10, 15, and 30 ft to pro- 
vide the deformation profile, 

Extensometer accuracy was limited pri- 
marily by rod friction effects to about 
±0.005 in (5^), while data acquisition 
system resolution was limited to 0.1% of 
total range. In order to provide range 
for possible outward movement and extra 
closure, 2-in ranges were chosen for the 
first two levels. To allow for inelastic 
rock deformation, 4-in ranges were speci- 
fied for the last two levels. A sche- 
matic of the extensometer is shown in 
figure 2. 

LINING PRESSURE 

Measurement of tangential lining pres- 
sure was complicated by the distribu- 
tion of superimposed localized bending 
and shear stresses. Shear stresses were 
avoided by virtue of the flat jack pres- 
sure cell design chosen. The influence 
of bending stresses was minimized by 
positioning the cells to measure tangen- 
tial stress at the middle of the lining. 
The tangential load produced by a given 
rock displacement was estimated by com- 
bining thin-wall cylinder solutions for 
both radial displacement and tangential 
stress due to an external hydrostatic 
pressure to give 

St = UpE/a (2) 

where Sf = average tangential (hoop) 
stress 

a = inside radius 

E = modulus of deformation 

Up = radial displacement. 

For a displacement of 0.005 in, the 
tangential stress in the liner would 



Junction box 



r 



Regulated^ 

Current 
power . . . ^ . 

limiting 
supply . ^ 

, , , resistor 
i|| :7^i|l|i ^AA^ 



1 



5 Vdc 



50/i( 1 %) 
1 / 4 W 



'I 



Transmitter 
1 



Gain: 5 m V 
Range: 
0-50m V 



A/D 
converte 




( V) = 1/100 



Borehole anchor 



rods 



Borehole collar 

4-in range linear potentiometer 

FIGURE 2. - Electrical schematic of the multiple-point borehole extensometer. 



increase by 162 psi. Pressure cells of 
the type used have a sensitivity of with- 
in 10 to 15 psi, which is the limiting 
factor for ranges up to 10,000 psi, where 
the 0.1% resolution of the data acquisi- 
tion system becomes important. The range 
of cells used corresponds to the expected 
stress range of to 3,000 psi. Labora- 
tory tests of concrete cylinders showed a 
uniaxial compressive strength of around 
3,500 psi. A schematic of the pressure 
cell is shown in figure 3. 

LINING STRAIN 

Concrete typically displays an increas- 
ing strength and deformational modulus 



with time, suggesting that lining strain 
is load-path dependent. Early loading 
of the lining while still green may be 
relieved by creep of the concrete lin- 
ing. Finding the amount of creep and 
the effect of increasing modulus requires 
measurement of strain in the concrete 
lining. The strain readings were also 
valuable as a backup in case of pressure 
cell failure. Concrete embedment strain 
gauge specifications are comparable with 
those of the pressure cells , with a sen- 
sitivity of ±20 microstrain and a range 
of to 20,000 microstrain. Figure 4 is 
a schematic of the embedment strain gauge 
circuit. 



Junction box 



r 



Regulated^ 

Current 

P°*«^ limiting 

supply resistor 



1 



- Shield 




Cabling 



Semiconductor 
pressure transducer 



Gauge body 



Mortar briquette 



FIGURE 3. - Electrical schematic of the pressure cell. 



TEMPERATURE 

The grout curing in the extensometer 
boreholes and the concrete lining pro- 
duced significant heat and elevated the 
temperature of the instruments for a 
short time after installation. Although 
the instruments were expected to function 



at the expected maximum temperatures, 
temperature was monitored for correction 
of instrumentation data. Thermistors 
were specified to handle a range of tem- 
peratures from 60° to 160° F and for dur- 
ability. The schematic for the thermis- 
tor is shown in figure 5. 



INSTRUMENT MODIFICATIONS 



The instruments installed in the Silver 
Shaft were mostly of proven designs that 
were available "off the shelf," although 
they required modification for efficient 



installation and protection against shaft 
conditions. These modifications evolved 
with the project, resulting in the de- 
signs presented here. 



Junction box 



r 



Regulated 
power 
supply 

■il-^'I'l'^— 



Current 
limiting 
resistor 



■^VAA/' 



5Vdc 



1 8a( 1 %) 
1 /2W 



•I 



Lb 



Transmitter 
2 



Gain: 2 5 m V 
Range: 
0-25mV 



A/D 
converter 



Voltage 
divider 
(V)= V 




Bridge completion circuit 
potted in an aluminum tube 



Embedment strain gauge 
FIGURE 4. - Electrical schematic of the concrete embedment strain gauge. 



r 



Junction box 
25a 



Regulated 

power 

supply 

5Vdc 




1 00 



Completlon resistors 






Lir 



Transmitter 
2 

Gain:100mV 
Range: 
-50mV 
to + 5 m V 



A/D 
converter 



Voltage 

divider 

(V)=1 / 1 OV 




^ 



Thermistor 
( 3kA or 3 OKa) 



I (Controls current through 
the thermistor) 



_J 



FIGURE 5. - Electrical schematic of the thermistor. 



EXTENSOMETERS 

Geokon model A3 multiple-point borehole 
extensometers with inflatable anchors 
were modified for ease of installation 
and increased protection against lining 
installation, blasting shock, and fly- 
rock. These modifications did not affect 
the operation of the instrument but were 
additions to the packaging of system 
components. 

The limited time and space available at 
the shaft bottom demanded that the exten- 
someters be preassembled at the surface, 
lowered to the bottom of the shaft be- 
neath the muck bucket, and inserted into 
the borehole while still hanging beneath 
the muck bucket (fig. 6). The sling for 
suspending the extensometer protected the 
displacement transducers in the head from 
loading by the weight of the anchors and 
anchor rods , while it preserved the flex- 
ibility of the instrxoment for bending 
into the borehole. The sling consisted 
of a steel cable attached to the head of 
the extensometer to support the blast 




Muck bucket 



Cable sling 



Extensometer 



4-in-diam pipe 

to 5.900-ft 

station 



Nylon rope 



50-lb weight 

FIGURE 6. - Multiple-point borehole extensom- 
eter installation. 



bottom 
lowered at 



protection enclosure and electronics , and 
a polypropylene rope that was run along 
the length of the instrument, tied off 
at each anchor and at the head, in order 
to support the weight of the rods and 
anchors. A 50-lb weight tied to the 
bottom of this rope minimized swinging 
while the instrument was lowered to the 
of the shaft. The assembly was 
slow speed and monitored for 
fouling in the shaft steel. The sling 
was easily disassembled during instrument 
installation. 

Protection against blasting shock and 
flyrock damage to the extensometer and 
readout cables was provided as shown in 
figure 7. The major components were the 
head enclosure can, the blast shield, and 
the cable armor. The head enclosure was 
basically a steel can mounted to the base 
of the extensometer head to protect the 
transducers and electrical connections. 
Holes were provided for water drainage 
and exit of the signal cables. The en- 
closure also served to retain the grout 
in the borehole. The blast shield was a 
3/8-in steel plate rockbolted over the 
extensometer head, which was recessed 



Bull hose 




"^'°^^^^ "^T^^: 




'^WTT 



FIGURE 7. - Multiple-point borehole extensom- 
eter head protection. 



uumiuMumiMiia ia 



10 



into a "doghole." The signal cables were 
delivered in 3/8-in conduit with water- 
proof connectors. Additional cable pro- 
tection was provided by the head enclo- 
sure and blast shield at the extensometer 
head, and a covering of 3-in compressed 
air bullhose tied to the wire mesh, which 
extended up to the concrete lining. The 
cables were then run through a 4-in 
schedule 40 pipe in the lining to the 
junction box on the station above. 

PRESSURE CELLS 

Geokon model 3600, 9-in-diam, mercury- 
filled pressure cells with semiconductor 
pressure transducers were precast in 
grout blocks for precrimping in the lab. 
The crimp tube of the pressure cell is 
used to expand the cell and establish 
positive contact with the concrete. Con- 
tact is often lost during curing of the 
concrete because of water migration to 
the steel and differential thermal expan- 
sion. Precasting enabled contact to be 
established in the laboratory instead of 
the shaft, and eliminated the need to ex- 
pose the crimp tube to shaft conditions. 
The stiffness contrast between the grout 
and cell required a final calibration 
(appendix A) . 

Anchor wires were cast along with the 
cells into 13- by 13- by 4-in blocks, 
which tended to float in the liner con- 
crete. The wires were tied to 18-in, 
U-shaped rebar anchors placed in the con- 
crete. The cell cables were encased in 
3/8-in flexible conduit that ran up the 
shaft wall to a 4-in pipe in the liner 
pour above, and finally to the junction 
box on the station above. 

STRAIN GAUGES 

Four-inch Ailtech Concrete Embedment 
Strain Gauges were precast in a number 
of different briquettes for protection 
against damage during installation. The 
final briquette design was a 3-in-diam by 




Strain gauge 
briquett 



FIGURE 8. - Encapsulated strain gauge instal- 
lation, 5,960 level. 

6-in cylinder cast using the shaft con- 
crete mix (large aggregate removed) 3 
days before installation (fig. 4). Tie 
wires were cast through the briquettes 
for anchorage during installation. The 
anchors were similar to the pressure cell 
anchors. Bridge completion circuits were 
built in 1/2-in aluminum conduit, potted 
in place, and cast in the ends of the 
briquettes. The strain gauge cables were 
protected by flexible conduit and wired 
in groups of five, as shown in figure 8. 



DATA ACQUISITION SYSTEM 



A primary concern in designing the 
instrumentation system for the shaft 
was ensuring accurate, timely collection 
of data from the instruments. Previous 



experience (6-7) with shaft data col- 
lection and anticipated shaft conditions 
indicated the need for a remote data 
acquisition system (RDAS). The goals of 



11 



the Silver Shaft project necessitated 
frequent readings for several months' 
time. 

The operating specifications of the 
RDAS included frequent scanning of the 
instruments, preservation of instrument 
accuracy, and transmission of data to the 
surface over distances up to 6,800 ft. 
In addition, the system had to provide 
instrument data quickly and clearly to 
mine engineers and had to be easy to use. 
Finally, the shaft cable requirements 
were minimized to control costs and in- 
stallation time, especially for the 
deeper levels. 

The RDAS was based on a Bureau of Mines 
design (7) for a blind shaft boring ma- 
chine, which included an underground sub- 
system to read instruments and transmit 
data to the surface, and a surface sub- 
system to receive, reduce, and store the 
data. The underground subsystem included 
an instrumentation power supply, volt- 
meters, analog to digital (A/D) convert- 
ers, and digital transmitters enclosed in 
a sealed junction box. The surface sub- 
system included a digital receiver, data 

LOCAL 
(Mine office) 



T>:^jB!W\t?'/n\'F^;i 



2,0 1 4 ft Test level 1 

4,0 63ft Test level 2 

5, 191ft Test level 3 

5,9 55ft Test level 4 

Junction box 
Bottom at 6,2 f t 

FIGURE 9. - Data acquisition system configuration at the Silver Shaft. 



buffer, and microcomputer. The system 
and instrumentation levels are illus- 
trated in figure 9. 

UNDERGROUND SUBSYSTEM 

The underground subsystem for each 
level was built around two Burr-Brown 
Micromux #6820 transmitters. Each trans- 
mitter measures voltage outputs from 16 
instruments and transmits the readings to 
a receiver on the surface over a single 
twisted-pair telephone cable. The trans- 
mitters operate automatically, continu- 
ously scanning instruments and transmit- 
ting data. 

The transmitters, and a 5-V dc regu- 
lated power supply for instrument excita- 
tion, were sealed in a 24-in (wide) by 
36-in (high) by 12-in (deep) stainless 
steel junction box (J-box) for protection 
against corrosion, shock, and invasion. 
Instrumentation, mine power, and trans- 
mission line connections into the box 
were made through waterproof bulkhead 
connectors. A 100-W heater inside the 
box was operated continuously to maintain 

REMOTE 
( S p o l< a n e Research Center) 



^^-— J-\^ J 


1) 






Micro- 




1 ^ 


k^ 




it 




computer 






— n r\ f\ ' ^ 


















M a i n 
frame 




i 


1 Receiverand 
i microcomputer 


Commercial phon 
line via modem 


//sx 













Sensors 




12 



a slightly elevated temperature and pre- 
vent condensation. Each J-box was in- 
stalled in a nearby station, as close as 
possible to the instrumented level. 

SURFACE SUBSYSTEM 

The twisted-pair telephone cables from 
the transmitters were run up the shaft, 
through a buried PVC conduit to the 
mine office, and into a Micromux #6800 
receiver. The receiver collected the 
transmitted data as ASCII code in a buf- 
fer that was refreshed every 10 s (for a 
two-transmitter system) . The contents of 
the buffer were available for reduction 
and storage by a microcomputer. 

A software package, MDAP85, was de- 
veloped for the Hewlett-Packard HP-85 
microcomputer to collect and process the 



buffered data. Specifications of the 
package include: 

Automatic data sampling time inter- 
vals from 3 min to several hours (all 
channels) . 

Immediate data reduction and 
printout. 

o Produce on-site CRT or hard-copy 
plots of results. 

100-scan automatic storage capacity. 

Long-distance automatic data collec- 
tion through modems . 

Data file uploading to mainframe 
computers via modems . 

User friendly. 

Capable of monitoring two instrumen- 
tation levels. 

A detailed user's guide and program 
listings are included as appendixes B and 
C, respectively. 



INSTALLATION PLAN 



The instrumentation levels were located 
so as to provide a profile of changing 
behavior with depth while focusing on 
deeper, and hence more highly stressed, 
sections of the shaft. The geology was 
fairly consistent with depth, except for 
occasional minor faults and joint sets 
that were not mapped beforehand, and 
played little part in locating the in- 
strument levels. However, the orienta- 
tions of some of the extensometer bore- 
holes had to be slightly adjusted where 
weak, ravelly rock or faulting was en- 
countered. Since the instruments had to 
be installed with a minimum of inter- 
ference with sinking operations, the 
exact depth of each level was determined 
by the timing of holidays when sinking 
was halted. 

2,414 LEVEL 

The first set of instruments, consist- 
ing of multi-point borehole extensome- 
ters, concrete pressure cells, and ther- 
mistors, was installed at a depth of 
2,414 ft. Definition of radial deforma- 
tion as a function of angle around the 
shaft was sought to determine the influ- 
ences of bedding, rock properties, and 
in situ stress field. This suggests the 
installation of six extensometers at 



60° angles , which was considered too 
expensive and time consuming to be prac- 
tical. Instead, three extensometers were 
specified, as this would provide suffi- 
cient data to determine the effects of 
major discontinuities and the in situ 
stress field. The total closure measure- 
ments depended on the symmetry of the 
shaft, although the closure at each ex- 
tensometer towards the center of the 
shaft was estimated from the stable an- 
chor. In order to study the influence of 
bedding on deformation, the extensometers 
were oriented parallel, perpendicular, 
and at 45° to the bedding strike. 

The pressure cells monitored hoop 
stress in the lining. In an ideal lining 
with no shear on the rock-concrete inter- 
face, opposite sides of the lining carry 
identical loads and the magnitude of the 
loads is directly related to the in situ 
stress field. In order to directly com- 
pare measured liner stress with the pre- 
dictions of idealized models, four pres- 
sure cells were installed at 90° angles 
starting with shaft north. 

Temperature variations due to curing of 
borehole grout and the lining concrete 
were measured with thermistors at each of 
the pressure cells , at one of the exten- 
someter heads , and at three points along 
one of the extensometer boreholes. 



13 



The extensometers were installed as 
close as possible to the shaft bottom 
(about 4 ft). The kerb ring form was 
then lowered to the shaft bottom, and the 
pressure cells were installed with the 
concrete pour. Installing the 1-ft-thick 
concrete lining to within 4 ft instead of 
the usual 20 ft, of the shaft bottom in- 
creased the maximum possible elastic 



load imparted to the lining. Plan and 
section views of the instrument configur- 
ation are shown in figures 10^ and 11, 
respectively. 

4,063 LEVEL 

The instrumentation plan was modified 
at the 4,063 level by eliminating the 



-E 1 



P C 4 




S G 2 



E 2 



PCS 



A, 2,414 level 




E 3 



B, 4,063 level 



KEY 

E Borehole e x t e n s o m e t e r 
SG Strain gauge 
PC Pressure cell /f'E2 



S G 8 



//SG4 



P C 2 




E3 



N 



P C 4 



■E 1 




P C 4 
S G 4 



S G 6 



C, 5,191 level 



3 6 9 

I 1 I I 



D, 5, 960 level 



Scale, ft 

FIGURE 10. - Instrument location by level. 



E 3 



14 



Galloway 



Cactus grab 



Borehole 
extensometer 




Muck bucket 



Concrete forms 



Split Set rock bolts 



Pressure cell 
and strain gauge 



7MVWM'^W/MlWyMrF ?/^^^,Mit=^/MVt^ -7?7 



Kerb ring 
FIGURE 11. - Instrument installation at the 2,414 and 4,063 levels. 



borehole thermistors, which showed little 
response at the 2,414 level, and adding 
concrete embedment strain gauges (fig. 
lOB). These gauges were installed next 
to each pressure cell to measure the 
strain equivalent to the stress measured 
by the pressure cells. Creep strains 
could then be estimated by assuming a 
value for liner modulus and substracting 
load cell strain estimates from strain 



gauge readings. In order to avoid dam- 
aging the gauges during installation, 
they were precast in 3- by 5- by 6-in 
briquettes of fine aggregate concrete and 
98% cured before installation. The addi- 
tion of the briquette complicated data 
interpretation by introducing a constant- 
ly changing modulus contrast between the 
curing concrete and the more fully cured 
briquette. 



15 



5,191 LEVEL 



modulus during the first few days after 
installation. 



Changes were made in instrument selec- 
tion and placement, as well as installa- 
tion procedure, for the third level. In 
anticipation of plastic rock behavior, 
liner installation was delayed 2 days for 
20 ft of additional shaft sinking, which 
is the normal procedure. The amount of 
elastic deformation "felt" by the lining 
was thereby reduced, but the sequence was 
more representative of the normal sinking 
cycle. In addition, the range of the ex- 
tensometer transducers was increased to 
4 in. 

The selection of instruments was modi- 
fied by replacing the four pressure cell 
thermistors with unencapsulated strain 
gauges (fig, IOC), Data from the first 
two levels had well defined the tem- 
perature changes due to the curing con- 
crete, and additional data were needed 
on concrete lining performance. The un- 
encapsulated gauges were installed in an 
attempt to judge the effects of the pre- 
cast briquettes. Ceramic aggregate was 
used to reduce the strain gauge briquette 
modulus in order to increase gauge sen- 
sitivity and more nearly match lining 

SUMMARY 



5,955 LEVEL 

Further adjustments to instrument se- 
lection and placement were made for the 
final level (fig, lOP), but the instal- 
lation procedure remained the same as 
for the 5,191 level. The extensometers 
were modified by removing the 2-ft an- 
chors and converting to hydraulic an- 
chors, but still grouting the borehole. 
The unencapsulated strain gauges were 
eliminated because of their excessive 
failure rate (75%) , but the number of 
encapsulated gauges was increased from 4 
to 10. Eight of the gauges were distrib- 
uted at equal intervals around the shaft, 
and the remaining two were placed to the 
inside and outside of the liner to mea- 
sure the strain gradient across the 
thickness of the lining. The briquettes 
for this level were 3-in-diam cylinders 6 
in long, of shaft mix concrete that was 
poured 3 days before installation to 
minimize modulus contrast at any given 
time and to ensure that the final moduli 
were equal. 



An effective microcomputer-based in- 
striimentation system for monitoring 
ground support in a deep mine shaft was 
developed and implemented. Experience 
from four instrumentation levels was used 
to refine the instrumentation system 
to its present state. The system has 
operated without maintenance for months 
under harsh mine conditions, alleviating 
the need to send personnel underground, 
and providing results quickly. It is 
suited to most underground instrumenta- 
tion projects, although modifications may 
be needed if transmission distance is 
substantially greater than 6,800 ft. 



Since the development of this system, it 
has become a standard at the Bureau's 
Spokane Research Center and is being 
used, with some modifications, for moni- 
toring construction of a rectangular 
shaft and coal mine ground support. Im- 
plementation of the system has reduced 
personnel requirements in the field, in- 
creased the frequency and accuracy of 
data collection, and reduced mobilization 
time for field projects. Uploading of 
data to the Bureau's mainframe computer 
in Spokane has facilitated handling of 
the typically extensive data bases that 
result from these projects. 



REFERENCES 



1. Board, M. P., and M, J. Beus. In- 
strumentation and Preliminary Analysis of 
a 6,200-ft Deep Circular Shaft in North- 
ern Idaho. Paper in Proceedings of the 
Symposium on Geomechanics Applications in 



Underground Hardrock Mining (Denver, CO, 
Oct. 20-26, 1984). Soc. Min. Eng. AIME, 
1984, pp. 127-140. 

2. Beus, M, J., and M. P. Board. 
Field Measurement of Rock Displacement 



16 



and Support Pressure at 5,955-ft Level 
During Sinking of Deep Circular Shaft In 
Northern Idaho. BuMlnes RI 8909, 1984, 
11 pp. 

3. Obert, L. , and W. I. Duvall, Rock 
Mechanics and the Design of Structures in 
Rock. Wiley, 1967, p. 108. 

4. Schwartz, C. W. , and H. H, Ein- 
stein. Improved Design of Tunnel Sup- 
ports: Volume 1 - Simplified Analysis 
for Ground-Structure Interaction in Tun- 
neling. U.S. Dep. Transportation, Rep. 
DOT-TSC-UMTA-80-27.I, June 1980, v. 1, 
450 pp. 

5. Cording, E. J, , A. J. Hendron, 
W. H. Hansmire, J. W. Mahar, H, A. 
MacPherson, R. A, Jones, and T. D. 
O'Rourke. Methods for Geo technical 



Observations and Instrumentation in 
Tunneling (grant GI-33644x, Nat. Scl. 
Foundation). Univ. IL, Dep. Civil Eng. , 
Champalgn-Urbana, IL, 1975, 2 volumes, v. 
1, 296 pp. 

6. Gooch, A. E., and J. P. Conway. 
Field Measurement and Corresponding 
Finite-Element Analysis of Closure During 
Shaft Sinking at the Lucky Friday Mine. 
BuMlnes RI 8193, 1976, 19 pp. 

7. McVey, J. R. , W. C. Vilwock, and 
P. F. Sands. Computer Monitors Twenty- 
Four Foot Blind Shaft Boring Machine. 
Paper in Proceedings of the Western Min- 
ing Industry Electro-Technology Confer- 
ence (Reno, NV, Sept. 14-16, 1981). 
Univ. NV - Reno, 1981, 24 pp. 



17 



APPENDIX A. — INSTRUMENT CALIBRATION 



Although the instruments installed in 
the shaft were acquired commercially, 
some laboratory work was necessary to 
confirm factory calibrations , compensate 
for instrument modifications, and inves- 
tigate possible sources of error. 

LINEAR POTENTIOMETERS 

All of the linear potentiometers were 
calibrated prior to the final assembly of 
the extensometers . The potentiometer was 
wired into the data acquisition system, 
clamped in a calibration jig, and cali- 
brated with a micrometer. The raw data 
output was plotted against displacement 
in a least squares fit. 

CONCRETE PRESSURE CELLS 

The placement of concrete pressure 
cells in concrete often results in the 
formation of a gap on the steel-concrete 
interface. Migration of water from the 
hot, curing concrete mass to the cooler 
steel surface of the pressure cell may 
contribute to the problem. Another pos- 
sibility is decoupling during cooling be- 
cause of the greater thermal expansivity 
of the steel. 

To overcome this problem, the pressure 
cells were first cast in a grout "brick." 
A cast pressure cell is shown in figure 
A-1, The grout mix design (table A-1) 
was developed specifically to match the 
fully cured modulus of the grout with 
that of the Silver Shaft concrete. Thus, 
the pressure cell was thought not to be a 
"high modulus inclusion" in the cured 
liner, which could concentrate stress. 

With the grout brick in contact with 
the concrete in the liner, void pro- 
duction was minimized. A "cold joint" 
formed between the concrete and brick, 
but it was perpendicular to the applied 
compressive stress and probably did not 
influence the load transfer. 

Each cell was cast in a grout brick 
with dimensions of 13-in by 13-in by 4-in 
thick. Following 4 h of curing, the 
cells were placed in moist polyethylene 
bags to allow a slow cure. After 7 days, 
the cell-grout assemblies were calibrated 
in a compression testing machine. The 
applied stress was brought up in 100-psi 



TABLE A-1, - Pressure cell grout mix 

Parts by weight 



Component : 

Cement (port land lA) . . 

Water 

Sand 



8 

4 

32 



units , and the output voltage of the 
pressure transducer was recorded. An 
example of the voltage output versus 
stress is given in figure k-lA, When the 
cells exhibited nonlinearity at low ap- 
plied stress (fig. A-2S) , the pinch tube 
was crimped, forcing mercury into the 
cell. 

Two other calibrations were performed. 
First, the temperature sensitivity of the 
cell-grout system was examined. The as- 
sembly was placed in an oven at room 
temperature. The temperature of the oven 
was raised in approximate 10° F inter- 
vals , each time allowing the gauge out- 
put to stabilize. The results of this 
calibration are shown in figure A-2C. 
The purpose of this test was to examine 
any voltage offset due to temperature 
expansion of the various system compo- 
nents under zero applied stress. As seen 
in figure A-2C, a change in gauge output 
of only 0.35 mV was experienced. This 
change is 1% of total gauge output from 
to 1,000 psi and represents a calcu- 
lated stress change of only 10 psi. This 
negligible change indicates low thermal 
sensitivity of the instrument. 

A second test was performed to ex- 
amine any slope change in the calibration 
curves as a function of temperature. The 
cell was heated to 120° F, then removed 
from the oven while insulated; a calibra- 
tion load cycle was then performed as 
quickly as possible. The subsequent cal- 
ibrations indicated no significant change 
in the slope of the stress-voltage curve, 
so the stress-voltage curves at ambient 
temperature were used throughout the 
project, 

THERMISTORS AND STRAIN GAUGES 

The thermistors were calibrated by the 
manufacturer prior to shipment. Strain 
gauge reduction data were supplied by 
the manufacturer. 



18 




FIGURE A-1. - Cast pressure eel 



19 




> 

E 



3 
Q- 

I- 
D 

o 




2 5 



5 7 5 

STRESS, psi 



00 



1,250 



0.7 

. 6 5 
. 60 

. 5 5 

. 5 

. 4 5 

. 4 



. 35 



1 
-C 




1 


1 


1 


1 1 


1 


1 


i • 


- 














• 


- 


- 












• 




— 


- 










• 






— 


- 






• 


• 








- 





• 














_ 


• 
1 




1 


1 


1 


1 1 


1 1 


1 


1 



90 100 110 120 130 140 150 160 170 180 190 200 
TEMPERATURE, "F 
FIGURE A-2. - Pressure cell calibration curves. 



20 



APPE^fDIX B.— USER'S GUIDE TO MDAP85 



INTRODUCTION 

MDAP85 is a BASIC language program 
written for collecting and reducing data 
from a Mlcromux data acquisition system 
with an HP-85 microcomputer. The origi- 
nal version of this program was developed 
by Terra Tek Engineering under Bureau 
contract J0205048 entitled, "Structural 
Evaluation of a Circular, Concrete-Lined 
Shaft In a Deep Vein Mine." This program 
was enhanced by the Bureau for monitoring 
Instrumentation at the 5,955 level of 
Hecla's Sliver Shaft Mullan, ID. 

Program enhancements made by the Bureau 
Include: 

1. Automatic data acquisition via 
telephone modem. 

2. Uploading from HP-85 data tapes to 
a Burroughs 6800 mainframe. 

3. Enhanced output Including change In 
data since last scan. 

MDAP85 can collect data from up to 32 
channels from each of two different In- 
strumentation sites for a total of 64 
channels. MDAP85 consists of several 
different program modules, most of which 
are stored on a tape cartridge referred 
to throughout this manual as the "pro- 
gram tape." Other routines for long-term 
plotting and data uploading are stored 
on a tape cartridge referred to as the 
"utility tape." BASIC listings of all 
program modules are given In appendix C. 
The use and purpose of each program mod- 
ule, as well as the hardware and software 
required to utilize this program, are 
described In this appendix. 

HARDWARE REQUIREMENTS 

The hardware (figure B-1 and table B-1) 
Is grouped Into three subsystems: the 
Mlcromux transmitters underground, a lo- 
cal data acquisition system at the mine 
office, and a remote data acquisition 
system at Spokane Research Center, Addi- 
tional remote systems could be added, 
although only one could collect data at a 
time. The arbiter (fig. B-2) was built 
to allow remote access on demand, but It 



momentarily prevents the local system 
from collecting data. The local and re- 
mote HP-85 's are not aware of each other, 
so the mine office HP-85 can be elimi- 
nated If only remote data collection Is 
desired. 

PROGRAM MDAP85 

The maximum RAM available for the HP-85 
Is 32K, which Is Insufficient to hold the 
entire MDAP85 program In memory. There- 
fore, the program has been divided Into 
eight Integrated program modules and two 
Independent utility modules. The pro- 
gram modules share a parameter file, data 
files, and program tape, and they auto- 
matically load and run each other. The 
utility modules are actually a separate 
set of programs designed for special ap- 
plications and are not required for day- 
to-day data acquisition. A program flow 
chart showing the relationships between 
program modules , data files , Mlcromux 
hardware, and mainframe computer Is given 
In figure B-3. 

The program modules Include: 

1. Autost: This module prompts the 
operator to set time and date for use by 
several other program modules and Is run 
automatically If the program tape Is In- 
stalled In the HP-85 on power up. 

2. CONTRL: Main module for activating 
other modules. 

3. INPUT: For entering Instrument 
calibration factors and system operation 
parameters Into file PFILE. 

4, ACQUIR: Collects data from the Ml- 
cromux receiver via RS232 Interface, re- 
duces and prints the data, and loads the 
scan Into the data file, 

5, PQUIR: Collects data from the Ml- 
cromux receiver via telephone lines , re- 
duces and prints the data, and loads the 
scan Into the data file, 

6, STORE: Transfers the program tape 
data file onto mass storage tapes, 

7, PRINT: Prints the acquired data 
files, 

8. PLOT: Plots a single data file on 
the CRT or graphics plotter. 



21 



Spokane 
Research Center 



Mine office 



HP-85 
I M o d e m I 



— + 



Plotter 



H P- IB 



HP-8 5 



^---^e-^l^ 



T e I e p h o 
line 



Racal-Vadic 
V A35 5 




RS232 



Burroughs 
6800 



M i c r o m u X 
receiver 



I _TI 



Surface 
In shaft 



//xy^\\=8«| 



iiJS5?s:w 



Silver Shaft 




J 



M i c r omu X 
transmitter 

rmr 






M i c r mu X 
transmitter 










M i c r cm u X 
transmitter 





► Test site 1 
(32 channels 
maximum) 



► Test site 2 
(32 channels 
maximum) 



FIGURE B-1. - System configuration. 



22 



DB 25F 
to Micromux 

1 > 

2> 



DB ride Y4V 1 85 



3>- 

5>- 

7>- 

20>- 



IN400 7 



Triad F90-X 
Black-yellow 



500mF/25V 




^ 



3 90n 
1 /2 W 



■u-_r 



^ 




LED 
remote 
.■> 

LED 
local 



2 N 3 90 6 



3 9 0a 
1 / 2 W 



FIGURE B-2. - Arbiter schematic. 



DB 25M 
to modem 
<2 



-<3 
■<5 
-<7 
-<8 
-<20 



DB 25F 
to HP-85 
— <1 



■<2 
-<3 



<5 



r< 
< 



TABLE B-1. - Hardware list 

Underground subsystem: Transmitters Burr-Brown Micromux #6820 

On-site data acquisition hardware: 

Microcomputer HP-85 

Memory module (16K) HP-82903A 

Series 80 ROM drawer HP-82936A 

HP-IB interface HP-82937A 

Opt-001 serial interface HP-82939A 

HP-85 plotter-printer ROM HP-00085-15002 

HP-85 input-output ROM HP-00085-15003 

HP-85 advanced programming ROM HP-00085-15005 

Opt-002 graphics plotter HP-7470A 

Receiver Burr-Brown Micromux #6800 

Hardware for remote data acquisition: 

Microcomputer HP-85 

Memory module (16K) HP-82903A 

Series 80 ROM drawer HP-82936A 

HP-IB interface HP-82937A 

HP-85 plotter-printer ROM HP-00085-15002 

HP-85 input-output ROM HP-00085-15003 

HP-85 advanced programming ROM HP-00085-15005 

HP-95 modem HP-82950A 

Opt-002 graphics plotter HP-7470A 

Receiver (on-site) Burr-Brown Micromux #6800 

Modem (on-site) ' Racal-Vadic VA355 

Additional hardware for combined remote and 

local data acquisition: ^ Arbiter (on-site).... Custom built (figure B-2 for spec.) 

^Only 1 receiver required for combined remote and local data acquisition. 



23 



A u t o s t 



CONTRL 



(Power up) 



[ PQUIR 
A CQUIR 

"T — I — I" 



INPUT 



fi 



PRINT 



STORE 

— rT~ 



r 



PLOT 



P F I L E 



.J 



Data 
file 



< 



i 1 



N P L O T 



M I c r o m u X 

Data 
Acquisi- 
tion 
System 



ss^y 



MO D AT A 



1- 



T 



Mass 
storage 





B 6 80 
computer 





KEY 

-*■ Program control 
-*• D a t a flow 



I I Program modules 

I ' I Data files 



FIGURE B-3. - Program flow chart. 



The utility modules include: 

1. NPLOT: Plots multiple data files 
on the CRT or graphics plotter. 

2. MODATA: Transmits data files as 
character data through the phone modem. 
This module was designed for uploading 
data to Spokane Research Center's Bur- 
roughs 6800 computer and may require mod- 
ification for use with other computers. 

The data files include: 

1. PFILE: The parameter file that 
holds data reduction and program control 
parameters. 

2. Data file: The file on the program 
tape that stores data as collected up to 
the maximum allowable number of scans. 

3. Mass storage: A separate tape for 
permanent storage of completed data 
files. 

Each of these modules, when activated, 
presents a menu on the CRT that shows 
the function of software keys (K1-K8) 



throughout that module. Then the oper- 
ator can choose one of the options pre- 
sented in the menu and press the corre- 
sponding software key in order to execute 
the option. In almost all cases, once 
execution of an option is completed, the 
program will again present the menu for a 
new option (exceptions being options to 
exit or stop a module). 

For each program module, the menu al- 
ways includes two options: HELP and EXIT 
(or STOP in the case of module CONTRL). 
The option HELP gives a brief description 
of the functions of software keys. In 
some modules, it also provides additional 
information regarding the execution of 
the program. 

The EXIT option stops the execution of 
an active module and activates the CONTRL 
module automatically. This is the only 
way through which the operator can halt 
execution of one module and activate 



24 



another one. In CONTRL module, the STOP 
option halts execution of program MDAP85 
altogether. 

The MDAP85 program can be activated 
either from the module Autost or by di- 
rect application of system LOAD and RUN 
commands to any of its eight program 
modules. 

For example, enter: 

LOAD "CONTRL" 

and RUN. 

MODULE AUTOST 

The function of Autost is to set the 
computer's clock. The computer loses its 
settings of time and date any time the 
computer is turned off. Since the com- 
puter's time and date are recorded dur- 
ing data acquisition, they should be cor- 
rected when the power is turned back on 
again. Program Autost is started by: 

1 . Turning the power on while the pro- 
gram tape cartridge is installed in the 
tape drive; the system will automatically 
load and run Autost. 

2. Inserting the program tape car- 
tridge in the tape drive and typing the 
following commands: 

Load "Autost" 



RUN 



Autost prompts the operator to enter 
the current time (24-hour format) and 
date. 2 After these values are entered 
satisfactorily, the program prompts 
whether or not the operator wants to run 
program MDAP85. Depending on the opera- 
tor's answer, the program will either 
either activate the program module CONTRL 
or stop execution. 

MODULE CONTRL 

The function of this module is to acti- 
vate the other modules of program MDAP85. 
When any of the other modules exit, con- 

^All of the alphabetic inputs and an- 
swers to the questions posed in module 
Autost or program MDAP85 must be in up- 
percase characters. 



trol returns to module CONTRL. The key 
assignments for CONTRL are — 



Kl - INPUT 
K2 - ACQUIR 
K3 - PQUIR 
K4 - STORE 



K5 - PRINT 
K6 - PLOT 
K7 - HELP 
K8 - STOP 



Notice that the first six software keys 
are assigned to six major modules of pro- 
gram MDAP85. The operator can activate 
any of these modules simply by pressing 
the corresponding key. 

MODULE INPUT 

The INPUT module allows the operator to 
enter instrument parameters and calibra- 
tion factors into the computer for each 
channel. These parameters and factors 
are then written to a parameter file, 
PFILE, on the program tape cartridge, 
which is read by modules ACQUIR and 
PQUIR. The menu in this module presents 
the following assignments for the soft- 
ware keys: 

Kl - GENERAL 

General inputs include the address 
of the Micromux receiver, the number of 
Micromux transmitters, and the number of 
active "projects." A "project" is de- 
fined as a set of two transmitters (32 
channels) that are monitored on the same 
time schedule. The number of channels 
per project can only be changed by 
modifying the program. A maximum of two 
projects may be monitored. The Silver 
Shaft system collects 32 channels of data 
from two Micromux transmitters at each 
instrumented level. The address of the 
Micromux receiver is zero. If a group of 
Micromux receivers are wired in the same 
RS232 line, each must have a unique 
address . See the Micromux manual for 
further details. 

K2 - PROJECT 

Project inputs are the project name, 
the excitation channel address, and the 



mttiitnrMtr^\rwirrm 



25 



extensometer type. Instrumentation power 
supply voltage may vary and is included 
as a variable for data reduction. The 
extensometer type identifies the formula 
used in ACQUIR and PQUIR for extensometer 
data reductoion. 

K3 - CHANNEL 

Those parameters specific to each 
channel can be entered into the computer 
by this option. (Note that channels 1-32 
are used for project 1 and channels 33-64 
are used for project 2). The channel in- 
puts consist of channel title, reduction 
type, printing flag, conversion factors, 
and low and high limits. The reduction 
type is an integer number that is used 
for two different purposes. First, it 
specifies the type of signal for each 
channel; this in turn identifies the type 
of formula to be used in module ACQUIR 
for conversion of signals to engineering 
units. Second, the reduction type is 
used to identify the individual extensom- 
eters and their anchors. The channel re- 
duction types, their values, and the use 
of conversion factors is covered in the 
next section. The low and high limits 
specify the expected low and high values 
of the final converted data for each 
channel. These limits are used to show 
whether the data acquired are within the 
expected range. 



"PFILE" for proj- 
on the HP-85 



K4 - PRINT 1 

This option prints 
ect 1 (channels 1-32) 
printer, 

K5 - PRINT 2 



This option prints "PFILE" for proj- 
ect 2 (channels 33-64) . 

K6 - HELP 

K7 - EXIT 



number for CHANNEL before the correspond- 
ing parameters are dislpayed. ) In order 
to enter or change a parameter, the oper- 
ator must roll the cursor to the appro- 
priate location on the screen and change 
that parameter. After all parameters on 
the screen are satisfactory, "END LINE" 
is pressed and the computer reads the en- 
tire page of parameters. 

When module INPUT is exited, the pro- 
gram writes all of the parameters in the 
file PFILE. To transfer PFILE and its 
contents from the program tape cartridge 
to another tape, module INPUT must be ac- 
tivated. When the menu is presented, the 
operator replaces the program tape car- 
tridge with the second tape and executes 
the option EXIT. This procedure causes 
the parameter file, PFILE, to be trans- 
ferred onto the second tape cartridge. 
The program MDAP85, however, stops execu- 
tion after this operation. 

MODULES ACQUIR AND PQUIR 

These modules are used for data ac- 
quisition in program MDAP85. When acti- 
vated, they read the contents of the pa- 
rameter file written by module INPUT and 
create one active data file for each 
active project (if they do not already 
exist) on the program tape cartridge. 
These files are FILE01 and FILE02, which 
are used to store the data taken for 
projects 1 and 2, respectively. The menu 
includes the following software key 
assignments: 

Kl - MANU 1 

Each time this option is executed, 
the Micromux receiver will be prompted 
and data from channels 1-32 stored in 
FILE01. Then the scan (data taken from 
channels 1-32) will be printed on the 
HP-85 printer (fig. B-4) and the menu 
will be presented again, 

K2 - MANU 2 



In the case of K1-K3, the computer dis- 
plays the existing parameter values on 
the CRT. (The operator must enter a 
project nximber for PROJECT or a channel 



This option is identical to MANU 1, 
except that the data will be taken for 
project 2 (channels 33-64) and the re- 
sults will be written to FILE02. 



■Mi 



26 



K3 - AUTO 1 

This option scans for project 1 data 
automatically. When this option is cho- 
sen, the operator will be prompted for 
the desired time interval between scans 
and also the time elapse before automatic 
data acquisition starts. The scan inter- 
val is the time between successive scans , 
and the time elapse is the time before 
the first data scan. 

For example, if the time Interval is 5 
min and the time elapse is 20 min, the 
program waits for 20 min and then starts 
the process of taking data at 5-min in- 
tervals. The time interval can be any 
value between 3 and 1,440 min, while the 
time elapse can be any positive value up 
to 1,440 min. 

After these values are entered, the 
program presents the menu and displays 
the time at which the next scan will be 
taken automatically. This routine is re- 
peated after each scan. The actual pro- 
cess of taking, storing, and printing 
data by the computer in this mode is the 
same as in the manual mode. 

While the program is waiting in the 
automatic mode, the operator can execute 
any other option presented in the menu. 
In order to stop or adjust the automatic 
data acquisition for project 1, the soft- 
ware key, K3, must be pressed while the 
menu is displayed on the CRT, 

K4 - AUTO 2 

This option takes data for project 2 
in the automatic mode and is identical to 
AUTO 1, 

K5 - DISP 1 

This option takes data for project 1 
and displays it on the CRT. Unlike the 
first four options, however, it does not 
store and print the data. After the data 
point is taken, the operator will be re- 
quired to enter a particular channel num- 
ber (for selective channels) or press 
"END LINE" (for successive channels) in 
order to display the data for each chan- 
nel on the CRT. If a zero is entered in- 
stead of a channel number, the program 



will exit this option and present the 
menu. 

K6 - DISP 2 

This option is identical to DISP 1 
except that it takes data for project 2. 

K7 - HELP 

K8 - EXIT 

If automatic data acquisition is to 
be activated for both projects, the time 
interval and the time elapse for each 
project must be chosen carefully in order 
to avoid any time conflict. The operator 
should note that it might take up to 
3 min per scan for data to be taken, 
stored, and printed. Therefore, the time 
difference between any two scans from 
projects 1 and 2 must be greater than 3 
min to avoid conflict. 

It was mentioned earlier that the data 
taken for projects 1 and 2 are stored in 
FILE01 and FILE02, respectively. Each of 
these files has a maximum storage capac- 
ity of 100 scans. These files must be 
transferred onto a mass storage tape be- 
fore this capacity has been reached or 
the computer will halt. The transfer can 
be accomplished by using module STORE, as 
described in the next section. 

When using the PQUIR version of this 
module, the phone number is inserted at 
line 298. The phone number consists of a 
string of digits and "@" characters. The 
@ character causes a second delay in the 
dialing sequence. This is convenient 
when dialing through building switch- 
boards, etc., where a second dial tone is 
created. 

Output from PQUIR differs from output 
from ACQUIR in that the raw data string 
is printed out before each data table in 
order to help identify line noise and 
protocol problems. 

MODULE STORE 

The data stored in files FILE01 and 
FILE02 can be transferred from the pro- 
gram tape cartridge to a mass storage 
tape by module STORE. For this module. 



wwtt«w PROJECT 1 «^^^«» 

DATA SCAN #93 
TIPOE: 12:50:02 
DATE: OA/ig/83 



27 



CHANNEL 


ENGINEERING 


NET 


MUX 


NAME 


UNITS 


CHANGE 


DATA 


E1-1 COL 


1.341 


0.00 


004 


E1-2 30' 


0,369 


0.00 


028 


E1-3 15' 


1.046 


0.02 


185 


E1-^ 10' 


1.396 


0.00 


042 


E1-5 5' 


1.271 


0.13 


223 


E2-1 50' 


0.019 


-0.02 


015 


E2-2 COL 


1.147 


0.00 


050 


E2-3 15' 


1.293 


0.00 


303 


E2-4 10' 


0.775 


0.02 


137 


E2-5 5' 


1.189 


0.00 


240 


E3-1 CuL 


-0.168 


0.00 


347 


E3-2 30' 


0.141 


0.00 


337 


E3-3 15' 


-1.036 


0.03 


034 


E3-4 10' 


-0.922 


-0.00 


038 


E3-5 5' 


-0.950 


0.00 


038 


EXITE 


4.973 


0.00 


663 


PC-1 


885.990 


-2.62 


337 


PC-2 


773.450 


0.00 


304 


PC-3 


1842.300 


-2.50 


740 


PC-4 


1211 .100 


0.00 


452 


5G-1 


1014.800 


0.00 


545 


SG-2 


726.720 


0.00 


512 


5G-3 


967.560 


0.00 


278 


5G-4 


764.560 


0.00 


545 


SG-5 


1223.600 


-10.50 


610 


SG-6 


805.370 


0.00 


659 


SG-7 


1024.900 


0.00 


636 


SG-8 


492.810 


0.00 


374 


SG-9 


774.180 


0.00 


548 


SG-10 


942.200 


0.00 


534 


SHORT 


0.000 


0.00 


000 


EXITE 2 


0.000 


0.00 


511 




FIGURE B-4. - 'ACQUIR' 


printed output. 





28 



the menu presents the following software 
key assignments: 

Kl - STORE 1 

This option transfers the data con- 
tained in FILE01 onto a mass storage 
tape. 

K2 - STORE 2 

This option transfers the data con- 
tained in FILE02 onto a mass storage 
tape. 

K3 - HELP 

K4 - EXIT 

When either of the first two options is 
chosen, the program reads the data from 
the corresponding file into the internal 
memory of the computer. It then prompts 
the operator to replace the program tape 
cartridge with a mass storage tape. Af- 
ter this replacement, the program prints 
out the tape directory and prompts for a 
new file-name for the file being trans- 
ferred. The file-name entered must have 
from one to six alpha-numeric characters, 
and must be different from those already 
in the tape directory. The program then 
transfers the data from the computer in- 
ternal memory into the newly created mass 
storage tape file. 

When the transfer is completed, the 
updated catalog will be presented and the 
operator will be asked to put the pro- 
gram tape cartridge back into the tape 
drive. At this point, the operator will 
be given a chance to purge the original 
file (whether the original is FILE01 or 
FILE02) . The option for purging must be 
chosen if the file is full or if the op- 
erator wants to restart data acquisition 
with scan 1. 

One of the most probable errors during 
data transfer occurs when the mass stor- 
age tape is full. In this case, the com- 
puter prints an error message on the 
theirmal printer and gives the operator a 
chance to use amother mass storage tape 
cartridge. 

This module can also be used to trans- 
fer files between mass storage tapes by 



renaming the file to be transferred as 
FILE01 or FILE02 and using the appropri- 
ate option. 

MODULE PRINT 

This module prints the contents of 
FILE01, FILE02, and mass storage files 
on the HP-85 thermal printer. In this 
module, the following software key as- 
signments are in effect: 

Kl - PRINT 1 

This option prints the contents of 
FILE01. 

K2 - PRINT 2 

This option prints the contents of 
FILE02. 

K3 - STORED 

This option prints the contents of 
any file that has been stored on a mass 
storage tape by module STORE. 

K4 - HELP 

K5 - EXIT 

If the option for printing a stored 
file is chosen, the program prompts the 
operator to insert the mass storage 
tape containing the stored data into the 
tape drive. Then it prints the tape di- 
rectory and prompts for the name of the 
file to be printed. Note that the file- 
name entered must be one of those in the 
tape directory; otherwise, the program 
will print an error message and ask the 
operator to put the program tape car- 
tridge back into the tape drive. 

For all the print options , the program 
reads the file header and displays (on 
the CRT) the project number and ID, the 
total number of data scans in the file, 
the time and date of the first data scan, 
and the time and date of the last data 
scan stored in the file. Then it prompts 
for the time interval (starting and end- 
ing date and time) that identifies those 
data scans to be printed. After these 



29 



values are entered, the program starts 
printing the data. 

The printout contains the project file 
and Information (project number and ID, 
etc.) and also all of the data scans 
taken within the time Interval entered. 
For each data scan, the printout contains 
the data scan number, the time and date 
at which It was taken, and 32 channels of 
data. 

For each channel, the channel number 
and title, raw and converted values, and 
the channel condition are printed out. 
The channel condition can Indicate one 
of the following conditions: low (LOW), 
high (HIG) , error (ERR) , and change 
(CHG). The LOW and HIG Indicate whether 
the data taken are lower or higher than 
expected limits. The ERR Indicates that 
an error has occurred In the conversion 
of raw data. The CHG indicates that 
there has been a significant change (more 
than 5%) in the value of converted data, 
with respect to the average of values 
from the previous four data points. Fig- 
ure B-5 shows a typical printed output 
from the "PRINT" option. 

When the printing is finished, the pro- 
gram asks the operator to put the program 
tape back into the tape drive (if the 
option STORED was chosen for printing) 
and presents the menu. 

MODULES PLOT AND NPLOT 

These modules plot the converted data 
versus time on the CRT or the graphics 
plotter. The menu presents the following 
software key assignments: 

Kl - PLOT 1 

This option plots data from FILE01. 
K2 - PLOT 2 

This option plots data from FILE02. 

K3 - STORED 

This option plots data from any file 
that has been stored on a mass storage 
tape by module STORE, 

K4 - HELP 



K5 - EXIT 

When changing tapes (for stored files) 
and reading the files, these software 
keys function in a manner similar to 
those in module PRINT. The only differ- 
ence is when one of the plot options is 
chosen, the program transfers the con- 
tents of the corresponding file into the 
internal memory of the computer. This 
will serve to speed up the plotting pro- 
cess, since the program will not have 
to read the data from a file during 
plotting, 

Whe the transfer of data is complete, 
the program starts the plotting process. 
First, it displays the project and file 
Information on the CRT and prompts for 
the time interval (starting and ending 
date and time) for the plot; this time 
Interval is used both for identification 
of the data to be plotted and for plot- 
ting and labeling the x-axis. The pro- 
gram also prompts for the minimum and 
maximum values to be used in plotting and 
labeling the y-axis. 

After the above values are entered, the 
operator must choose between plotting on 
the CRT or the graphics plotter. .Due to 
its size, the plots made on the CRT are 
very coarse and should be used only for a 
preliminary check of the results. The 
graphics plotter is used for making com- 
plete, detailed plots. If the operator 
chooses to plot on the CRT, the program 
will start plotting the x- and y-axis. 
Otherwise, it will ask for the y-axis la- 
bel to be entered, and the plotter to be 
set (change of paper, etc.); then plot- 
ting and axes labeling is initiated on 
the graphics plotter using pen 1. 

Next, the program asks whether to plot 
data. This question provides an oppor- 
tunity to discontinue a plot; it also 
provides a pause for changing the plot- 
ter pen (in the case of the graphics 
plotter) . If the operator decides to 
continue plotting, the program will ask 
for the following inputs: channel number 
for the plot, number of points to bypass 
for identification (graphics plotter 
only) , option for connecting the data 
points (graphics plotter only), and a 
plotting factor or modulus for strain 
gauge channels (graphics plotter only) . 



30 



**:*:** PROJECT 1 ***** 







DATA SCAN #1 










TIME: 22:33:11 










DATE: 02/19/83 






CHANNEL 


CHANNEL 


CHANNEL 


RAW 


CON 


NUMBER 


NAME 


VALUE 


DATA 




1 


El-1 50' 


-6.870E-01 


507 


LOW 


2 


El-2 30' 


1.956E-02 


428 


HIG 


3 


El-3 15' 


-5.207E-02 


417 


LOW 


A 


El-4 10' 


-6.868E-01 


028 


LOW 


5 


El-5 5' 


-3.285E-01 


331 


LOW 


6 


E2-1 50' 


-1.318E+00 


002 


LOW 


7 


E2-2 30' 


-1.378E-01 


372 


LOW 


b 


Lz-j 15' 


-6.021E-02 


286 


T OT ' 


9 


E2-4 10' 


-9.835E-01 


018 


LOW 


10 


E2-5 5' 


-1.205E-01 


234 


LOW 


11 


E3-1 50' 


-1.149E-01 


334 


LOW 


12 


E3-2 30' 


-4.124E-02 


278 


LOW 


13 


E3-3 15' 


-4.830E-02 


265 


LOW 


14 


E3-4 10' 


-6.206E-02 


242 


LOW 


15 


E3-5 5' 


-7.013E-02 


248 


LOW 


16 


EXCITE 


4.973E+00 


663 


HIG 


17 


PC-1 


9.192E+01 


000 


HIG 


18 


PC- 2 


4.763E+01 


000 


HIG 


19 


PC- 3 


7.220E+01 


000 


HIG 


20 


PC-4 


3.423E+01 


000 


HIG 


21 


SG-1 


-5.127E-06 


000 


LOW 


22 


SG-2 


-1.081E-05 


000 


LOW 


23 


SG-3 


-1.486E-05 


000 


LOW 


24 


SG-4 


-5.481E-05 


000 


LOW 


25 


SG-5 


-1.978E-05 


000 


LOW 


26 


SG-6 


-7.898E-06 


000 


LOW 


27 


SG-7 


-6.756E-06 


000 


LOW 


28 


SG-8 


-7.515E-06 


000 


LOW 


29 


SG-9 


-7.630E-05 


000 


LOW 


30 


SG-10 


-4.246E-05 


000 


LOW 


31 




O.OOOE+00 


000 




32 




O.OOOE+00 


505 






FIGURE B-5. . 'PRINT' output format. 





31 



Then, it plots the data for the channel 
number entered. 

The process of plotting data (de- 
scribed above) will be repeated until the 
operator discontinues plotting, or the 
data for a maximum of six channels are 
plotted. After the plotting is discon- 
tinued, the operator will be asked if 
more plots are to be made from the file 
currently in computer memory. Depending 
on the answer, the program will either 
restart the plotting process or display 
the menu. 

Module PLOT has the capacity of plot- 
ting data from only one file per graph. 
In order to plot data from several files, 
the utility program NPLOT can be inde- 
pendently loaded and activated. With a 
few exceptions, the inputs and outputs 
of program NPLOT are similar to those 
of module PLOT. One such exception is 
that it is not necessary to remove the 
mass storage tapes and replace the pro- 
gram tape until all desired files are 
plotted. 

MODULE MODATA 

This module is a modified version of 
HP's MODCOM, which is supplied with the 
82950A modem. It has been modified to 
translate numeric data files written by 
MDAP85 with 32 channels of data to char- 
acter data and transmit those data to 
the SRC B6800 computer. A sequential 
data file with automatic line numbering 
on each carriage return must be set up 
on the B6800 to receive the data. There 
is no host prompt, and no delay is re- 
quired between lines. Specific software 
instructions are, the same as for the 
original MODCOM program and will not be 
repeated here. A binary program sup- 
plied with MODCOM is necessary to run 
MODATA. 

CONVERSION OF DATA TO ENGINEERING UNITS 

During data acquisition, the Micromux 
telemetry equipment converts the analog 
signals for each channel to integer val- 
ues (raw data) ranging from 000 to 999. 
The raw data, when received by HP-85, 
must be converted to engineering units. 



This conversion takes place in module 
ACQUIR using the parameters and conver- 
sion factor stored in parameter file 
PFILE. 

First, the raw data for each channel 
are converted to voltage according to the 
following formula: 

Vi = D,-C0, - CI i 

where i = channel number 

C0 = conversion factor 

CI = voltage offset 

D = raw data 

V = channel voltage 

After this conversion, various reduc- 
tion formulas are used to convert the 
voltage to other engineering units. The 
specific formula used for each channel 
depends on its signal type, which is de- 
termined from its reduction type entered 
in module INPUT, 

For the current system setup, five 
types of signals are analyzed. These 
signal types are described in the follow- 
ing sections. 

Excitation Voltage 

For this type of signal, no other con- 
version takes place after the conversion 
of raw data to voltage. The reduction 
type for a channel with this type of 
signal (excitation channel) must be set 
to zero. The excitation voltage is used 
in the conversion of data for other types 
of signals. 

Borehole Extensometers 

The reduction type for a channel with 
this type of signal is computed according 
to the following formula: 

R, = ION + r 

where i = channel number 

N = extensometer number 



32 



r = anchor number 
R = reduction type. 

In this way, the individual extensome- 
ters and anchors can be identified by 
the channel reduction type. The refer- 
ence anchor for each extensometer type 
must be set equal to one. This program 
is currently set up for five anchor 
extensometers . 

The extensometer type (referred to in 
module INPUT) specifies the formula used 
for data reduction. The Silver Shaft 
project used a reduction type set equal 
to two, which specifies the following 
steps: 

Ai = C2 Di (Ve^/Ve) + C3 

where Aj = channel i's absolute 
displacement 

C2 = calibration slope (in/digit) 

C3 = calibration zero 

Dj = digital output for channel i 

Vex = excitation voltage 

Vc = calibration voltage 

Solve for relative displacement from 
"stable" reference anchor: 

for r = 1 dj = Aj 

for r=2to5 di=di-At 

Concrete Pressure Cells 

The reduction type for this type of 
signal must be set equal to four. The 
following formula is used for conversion 
of voltage to tangential linear stress 
for channel i: 



cTi = [V,-C3,/(C5,-Vex)] + C4i/C5i + C2 

where C2 = offset from calibration, 
psi, set at installation 

C3 = voltage used in calibration 

C4 = calibration offset, V 

C5 = slope from calibration, 

V/psi 

a = pressure, psi. 

Embedment Strain Gauges 

The reduction type for this type of 
signal must be set equal to six. The 
following formula is used for conversion 
of voltage to tangential linear strains 
for channel i : 

ei = [4Vi/[Vex-C3,] - C4,] 

where C3 = gauge factor 

C4 = strain offset 

e = linear strain. 

Temperature Sensor 

The reduction type for this type of 
signal must be set equal to one. The 
following formula is used for conversion 
of voltage into temperature for channel 
i: 

Ti = C2i*Vi - C3i 

where C2 = conversion factor (°F/V) 

C3 = temperature offset, °F 

T = temperature, °F, 



33 



APPENDIX C— PROGRAM LISTINGS 
PROGRAM 'AUTOST' 



100 ! This is the "Autost" 

110 ! program -for HP-85. 

120 ! It asks -for time and date 

130 ! and runs program 'MDAPOS'. 

140 DIM R*C303 

150 ON ERROR GOTO 160 

160 CLEAR 

170 DISP USING 180 

180 IMAGE " PROGRAM =" Autost ="', 3/ 

190 DISP "Enter DATE and TIME" 

200 L INPUT "mm/dd/yyyy hh:mm:ss",R* 

210 R$=TRIM$(R*) 

220 A=HMS(R*CLEN(R*)-7:) 

230 B=MDY(R$C1, 10] ) -MDY (" 12/31 / 1981 " ) 

240 SETT I ME A,B 

250 ON ERROR GOTO 260 

260 CLEAR 

270 DISP "TIMES ",TIME$ 

280 DISP "DATE: ", MDY* (DATE+MDY (" 12/31 / 1981 ") > 

290 DISP USING 300 

300 IMAGE 3/ 

310 LINPUT "TIME, DATE ok<Y/N)?",A* 

320 IF A*="N" THEN 160 

330 IF A$#"Y" THEN 260 

340 ON ERROR GOTO 400 

350 CLEAR 

360 LINPUT "Run program 

370 IF A$="N" THEN 400 

380 IF A$#"Y" THEN 350 

390 CHAIN "CONTRL" 

400 STOP 

410 END 



MDAPaS' (Y/N)?",A* 



34 






MODULE 'CONTRL' 


1 00 


! This is module 'CONTRL'. 


102 


! It activates all other 


104 


! modules o-f prog. 'MDAP85' 


106 


! de-fined by keys K1-K6. 


108 


GOSUB 136 


110 


ENABLE KBD 32 


112 


ON KEY# 1, "INPUT" GOSUB 156 


114 


ON KEY# 2 


, "ACQUIR" GOSUB 162 


116 


ON KEY# 3 


, "PQUIR" GOSUB 168 


118 


ON KEY# 4 


, "STORE" GOSUB 174 


120 


ON KEY# 5 


, "PRINT" GOSUB 180 


122 


ON KEY# 6 


, "PLOT " GOSUB 186 


124 


ON KEY# 7 


, "HELP " GOTO 192 


126 


ON KEY# 8 


, "STOP " GOTO 250 


128 


CLEAR 1? KEY LABEL 


130 


DISP USING 132 


132 


IMAGE 3/," *****=• CONTRL' options*****" 


134 


GOTO 134 


136 


OFF KEY# 1 


138 


OFF KEY# 2 


140 


OFF KEY# 3 


142 


OFF KEY# 4 


144 


OFF KEY# 5 


146 


OFF KEY# 6 


148 


OFF k:ey# 7 


150 


OFF KEY# 8 


152 


ENABLE KBD 255 


154 


RETURN 


156 


GOSUB 136 


158 


CHAIN "INPUT" 


160 


RETURN 


162 


GOSUB 136 


164 


CHAIN "ACQUIR" 


166 


RETURN 


168 


GOSUB 136 


170 


CHAIN "PQUIR" 


172 


RETURN 


174 


GOSUB 136 


176 


CHAIN "STORE" 


178 


RETURN 


180 


GOSUB 136 


182 


CHAIN "PRINT" 


184 


RETURN 


186 


GOSUB 136 


188 


CHAIN "PLOT" 


190 


RETURN 


192 


GOSUB 136 


194 


CLEAR 1? ENABLE KBD 1 


196 


DISP USING 198 


198 


IMAGE 9X, "*****HELP*****",2/ 


2o<;) 


DISP "The 


keys operate as -Follows:" 



35 



202 DISP USING 204 

204 IMAGE /,"K1= run module 'INPUT'; it is",/, "the segment ior enter in 

g" 

206 DISP USING 208 

208 IMAGE "test in-formation and channel ", /j, "conversion -factors." 

210 DISP USING 212 

212 IMAGE /,"K2= run module 'ACQUIR'; it is",/, "the segment -for data", 

/, "acquisition. " , 3/ 

214 LINPUT "Hit 'END LINE' -for more help",A$ 

216 CLEAR 

218 DISP USING 220 

220 IMAGE /,"K3= run module 'PQUIR'; it is",/, "the segment -for phone d 

ata", /, "acquisition. ",2/ 

224 DISP USING 226 

226 IMAGE "K4= run module 'STORE'; it",/, "reads the data -files created 

by" 
228 DISP USING 230 

230 IMAGE "module 'ACQUIR' and stores" ,/, "them in a mass storage tape. 
",3/ 

233 LINPUT "Hit 'END LINE' -for more help". A* 

234 CLEAR 

235 DISP USING 236 

236 IMAGE /, "K5= run module 'PRINT'; i t" ,/, "prints out the test resul 
ts. " 

238 DISP USING 240 

240 IMAGE /,"K6= run module 'PLOT'; it",/, "plots the test results." 

242 DISP USING 244 

244 IMAGE /,"K7= ' HELP' . " , 2/, "K8= 'STOP' program ' MDAP85' . " , 2/ 

246 LINPUT "Hit 'END LINE' to return", A* 

248 GOTO 108 

250 GOSUB 136 

252 CLEAR 

254 STOP 

256 END 



36 


MODULE 'PQUIR' 




10 


This is module 'PQUIR'. 




20 


It is the modem version 




30 


o-f ='ACQUIR' -For remote 




40 


use o-f program 'MDAP85'. 




50 


PHONE VERSION 




60 OPTION BASE 1 




70 DIM P*C643,H*C5123,B*C204: 




80 DIM H::$C30D,Kl*Ci: 




90 INTEGER M, T, N, E (2) , X (2) , R (64) , S (64) , DO, Dl (2) , D2, D (64) , Y (2) , I , J , K 


,K1 


,Q,Q1,L1 (2) ,L2(2) ,G,0 




100 


INTEGER Z(3,6) , Jl, J2,D3(32) ,L3(2, 16) ,L4(2, 16) ,A(2) 




110 


SHORT C(9,64) ,V(64) ,F(64) ,F1 (32) , Zl (6) ,V1,F2(32) 




120 


REAL T0,T1 (2) , T2, T3, T4, T5, T6, T7 (2) ,T8(2) ,T9,U 




130 


D2=DATE 1? T2=TIME 




140 


CLEAR 




150 


DISP USING 160 




1 60 


IMAGE 9X, "MODULE =" PQUIR' " , 2/ 




170 


DISP "TIME: ",HMS*(T2) 




180 


DISP "DATE: ", MDY* (D2+MDY (" 12/31/1981 ") ) 




190 


DISP USING 200 




200 


IMAGE 3/, " Wait" 




210 


WAIT 2000 © ENABLE KBD 
1 




230 


! Read parameter file. 




240 


ASSIGN# 1 TO "PFILE" 




250 


CRT OFF 




260 


READ# 1 ; N,M,T,E() ,X() ,R() ,S() ,C(, ) ,P*,H* 




270 


CLEAR 




230 


ASSIGN# 1 TO * 




290 


1 




300 


! Initialise variables. 




310 


Dl (1)=D2 1? Dl (2)=D2 




320 


Tl (1)=T2 1? Tl (2)=T2 




330 


Y(1)=0 1? Y(2)=0 




340 


A(1)=0 1? A(2)=0 




350 


FOR 1=1 TO 6 




360 


Z 1 ( I ) =0 




370 


FOR J=l TO 3 




380 


Z(J, I)=0 




390 


NEXT J 




400 


NEXT I 




410 


FOR J=l TO 32 




420 


F1(J)=0 




430 


NEXT J 




440 


! Create output -files. 




450 


ON ERROR GOTO 510 




460 


ASSIGN# 1 TO "FILEOl" 




470 


OFF ERROR 




480 


PRINT* 1,1 ; P$C 1, 30], H*C 1,256] 




490 


READ# 1,2 ; Yd) ,D1 (1) ,T1 (1) 




500 


GOTO 570 




510 


OFF ERROR 





37 



520 

530 

540 

550 

560 

570 

580 

590 

600 

610 

620 

630 

640 

650 

660 

670 

630 

690 

700 

710 

720 

730 

740 

750 

760 

770 

780 

790 

800 

810 

820 

830 

840 

850 

860 

870 

880 

890 

900 

910 

920 

930 

940 

950 

960 

970 

980 

990 

100( 

lOK 

102( 

1 03(: 



P*C31,60:,H$ [257,5123 
Y(2) ,01(2) ,T1(2) ,D2,T2,2 



CREATE " F I LEO 1 " , 1 02 , 586 

ASSIGN# 1 TO "FILEOl" 

CRT OFF 

PRINT* 1,1 ; P*C 1, 303, H*E 1,256: 

PRINTtt 1,2 ; Yd) ,D1 (1) ,T1 <1) ,D2,T2, 1 

IF N=l THEN 710 

ON ERROR GOTO 650 

ASSIGNtt 2 TO "FILE02" 

OFF ERROR 

PRINTtt 2,1 ; P*C31, 603, H*C257, 5123 

READ# 2,2 ; Y (2> , Dl (2) , Tl (2) 

OFF ERROR 

GOTO 730 

OFF ERROR 

CREATE " F I LE02 ",102, 586 

ASSIGNtt 2 TO "FILE02" 

CRT OFF 

PRINT* 2, 1 

PRINT* 2,2 

! Key assignments. 

ENABLE KBD 32 

ON KEY* 1, "MANU 

ON KEY* 2, "MANU 

ON KEY* 3, "AUTO 

ON KEY* 4, "AUTO 

ON KEY* 5, "DISP 

ON KEY* 6, "DISP 

ON KEY* 7, "HELP 

ON KEY* 8, "EXIT 

CLEAR I? KEY LABEL 

DISP USING 840 

IMAGE 3/," ***** 'PQUIR' opt ions*****" , 2/ 

DISP USING 860 ; Y(1),Y(2) 

IMAGE "Proj *1: ",DDD," scan <s) "/"Pro j *2: ",DDD, 

FOR 1=1 TO 2 

IF A(I)=0 THEN 910 

DISP USING 900 ; I,HMS*(T7(I)) 

IMAGE "AUTO ",D," active at ",K 

NEXT I 

GOTO 920 

Call to 'MICROMUX' . 

OVER PHONE LINE 

ENABLE KBD 255 

S=10 I? M=0 I? T=2 I? X=0 

0=0 

IQBUFFER B$ * CONTROL B*,0 ; 1 ! USABLE 196 
:) K$="9i?li»'20S7441459" 
> CONTROL S,4 ; 26 
) CONTROL S,2 ; 6 
:> WAIT 2000 ! WAIT FOR DIAL TONE 



1" 


GOTO 


2600 


r> " 


GOTO 


2640 


1" 


GOTO 


3110 


*? " 


GOTO 


3130 


1" 


GOTO 


3390 


t? " 


GOTO 


3410 




GOTO 


3820 




GOTO 


4040 



scan (s) 



38 



1040 FOR 1 = 1 TO LEN(H:;*) 

1050 K1*=K*CI, i: 

1060 IF Kl $="!?" THEN WAIT 500 •? GOTO 1150 

1070 K=NUM(Kl$)-48 

1080 IF H::=0 THEN K=10 

1090 FOR J=l TO K 

1100 ASSERT S;5 i? ON TIMER# 3,51 GOTO 1120 

1110 GOTO 1110 

1120 ASSERT S;6 i? ON TIMER# 3,25 GOTO 1140 

1130 GOTO 1130 

1140 OFF TIMER# 3 6' NEXT J 

1150 WAIT 700 I? NEXT I 

1160 ON TIMER# 3,30000 GOTO 1180 

1170 GOTO 1190 

1130 CONTROL 10,2 ; 4© WAIT 30000 i? PRINT "1180 ERR" i? OFF TIMER# 3 i? 

GOTO 950 

1187 HALT 10 I? OFF TIMER# 3 i? GOTO 950 

1190 CONTROL S,2 ; 7 

1200 STATUS 10,3 ; B6' Z4=0 

1210 IF B=l THEN 1230 ELSE B=B-2 

1220 IF B<1 THEN 1200 ELSE 1210 

1230 OFF TIMERtt 3 

1231 ON ERROR GOTO 1233 

1232 B*="0" I? TRANSFER B* TO 10 INTR 

1233 ON ERROR GOTO 1232 
1235 CONTROL B*,0 ; 1,0 

1240 B*= i' OUTPUT 10 USING "#,Z,A" ; M, "?" 

1250 TRANSFER 10 TO B* INTR ; COUNT T*49 i? WAIT 5000 

1255 OFF ERROR 

1260 CONTROL 10,2 ; 4 

1270 PRINT B* 

1280 TO=TIME 

1285 ON TIMER# 3,30000 GOTO 1187 

1290 OFF TIMER# 3 i? DO=DATE 

1291 IF NUM(B*)<4S THEN PRINT "1291" i? ENTER B$ USING "#,X" i? X=l i? SF 
LAG 10 

1292 IF NUM(B*)>57 THEN PRINT "1292" 6' ENTER B$ USING "#,X" S' X=l i? SF 
LAG 10 

1300 FOR I=T TO 1 STEP -1 

1310 K=16*(I-1> 

1320 FOR J=l TO 16 

1330 ENTER B$ USING "#,3Z" ; D(J+K) 

1340 NEXT J 

1350 IF X<2 THEN PRINT "1350" i? ENTER B« USING "#,X" 

1355 X=X+1 

1360 NEXT I 

1365 IF FLAG (10) THEN B*="" i? TRANSFER 10 TO B* INTR ; COUNT 1 

1370 RETURN 

1380 ! 

1390 ! Change to engin. unit. 

1400 Ll(l)=-1 I? Ll(2)=-1 

1410 L2(l)=-1 I? L2(2)=-l 



39 



1420 FOR 1=1 TO 16 

1430 L3(1,I)=0 I? L3<2,I)=0 

1440 L4(1,I)=0 I? L4(2,I)=0 

1450 NEXT I 

1460 J=E(G) 

1470 ON ERROR GOTO 1570 

1480 V(J)=C<1, J)*D<J)+C(2, J) 

1490 F<J)=V(J) 

1500 V1=V(J) 

1510 K=IP<J/17)+1 

1520 IF G=2 THEN K=IP ( ( J-32) /17) +1 

1530 K1=J-16*K-32*G+4S 

1540 IF F(J)<C<S,J) THEN L3(K,K1)=1 

1550 IF F(J)>C(9,J) THEN L4(K,K1)=1 

1560 GOTO 1590 

1570 PRINT USING 1580 ; G 

1580 IMAGE "*****ERROR - CONVERSION 

0JECT",3D 

1590 FOR I=32*(G-1)+1 TO 32*G 

ON ERROR GOTO 1990 

IF I=J THEN 2070 

V(I)=C(1, I>*D(I)+C(2,I) 

Q=IP(I/17)+1 

IF G=2 THEN Q=IP ( (1-32) /17) +1 

Ql=I-16*Q-32*G+48 

IF RdXll THEN 1740 

J1=IP(R(I)/10) 



OF DATA",/, "EXCITATION CHANNEL, PR 



1600 
1610 
1620 
1630 
1640 
1 650 
1660 
1670 
1680 
1690 
1700 
1710 
1 720 
1730 
1 740 
1 920 
1750 
1760 
1770 
1780 
1790 
1 800 
1810 
1820 
1830 
1 840 
1850 
1 860 
1870 
1880 
1 890 
1900 
1910 



J2=RMD(R(I) , 10) 



IF Jl>3 THEN 
IF J2<1 THEN 
IF J2>6 THEN 
Z(J1, J2)=I 
ON X(G) GOTO 



1920 
1920 
1920 

1790, 1860 



ON R ( I > + 1 GOTO 1 750 , 1 770 , 1 790 ,1810,1 840 , 1 860 , 1 900 , 1 920 , 1 920 , 1 920 , 

F < I ) =V (I ) 
GOTO 1950 

F(I)=C(3, I)*V(I)-C(4, I) 
GOTO 1950 

F(I)=C<4, I)*V(I)/(C(6, I)*V1)-C(5, I)/C(6, I) 
GOTO 1950 

U=LOG( (V1/V(I)-1)*C(4, I) ) 
F(I)=1/(C(3, I)*U-t-C(4, I) )-C(5, I) 
GOTO 1950 

F(I)=C(4, I)*V(I)/(C(6, I)*V1)+C(5, I)/C(6, I)+C(3, I) 
GOTO 1950 

F(I)=C(3, I)*D<I>*Vl/5.0075+C(4, I) 
! NEW EXTENSOMETER 
! REDUCTION FORMULA 
GOTO 1950 

F(I)=4*V(I)/(V1*C(4, I) )-C(5, I) 
GOTO 1950 



40 






1 920 


V ( I ) =0 




1930 


F ( I ) =0 




1 940 


GOTO 2070 




1950 


IF R(I) >10 THEN 2070 




1960 


IF F(I)<C(8, I) THEN L3(Q,Q1)=1 




1970 


IF F(I)>C(9,I) THEN L4(Q,Q1)=1 




1 980 


GOTO 2070 




1990 


IF 0=1 THEN 2020 




2000 


0=1 1? BEEP 1? PRINT USING 2010 ; Y(G)+1 




2010 


IMAGE "*****ERROR - CONVERSION OF SCAN: " , /, DDD, " 


CHANNEL (S) " 


2020 


PRINT USING 2030 ; I 




2030 


IMAGE 15X,DDD 




2040 


V(I)=0 1? F(I)=0 




2050 


L3(Q,Q1)=1 




2060 


L4(Q,Q1)=1 




2070 


NEXT I 




2080 


FOR J 1 = 1 TO 3 




2090 


ON ERROR GOTO 2110 




2100 


Zl <1)=F(Z(J1, 1) ) 




2110 


FOR J2=2 TO 5 




2120 


ON ERROR GOTO 2140 




2130 


Zl (J2)=Z1 (l)-F(Z(Jl, J2) ) 




2140 


NEXT J2 




2150 


FOR J2=l TO 5 




2160 


ON ERROR GOTO 2260 




2 1 70 


I=Z(J1, J2) 




2180 


Z(J1,J2)=0 




2190 


F(I)=Z1 (J2> 




2200 


Zl <J2)=0 




2210 


Q=IP(I/17>+1 




2770 


IF G=2 THEN Q=IP ( ( 1-32) /17) +1 




V730 


Ql=I-16*Q-32*G+48 




7740 


IF F(I)<C(8,I) THEN L3(Q,Q1)=1 




2250 


IF F<I>>C(9,I) THEN L4(Q,Q1)=1 




2260 


NEXT J2 




7770 


NEXT Jl 




2280 


OFF ERROR 




2290 


FOR 1=1 TO 2 




2300 


FOR J=l TO 15 




2310 


IF L3(I,J)=0 THEN LI < I ) =L1 ( I ) -2-M J-1 ) 




2320 


IF L4(I,J)=0 THEN L2 ( I ) =L2 ( I ) -2'- ( J-1 ) 




2330 


NEXT J 




2340 


IF L3<I,16>=0 THEN Ll< I ) =BINEOR (LI ( I ) , -32768) 




2350 


IF L4(I,16)=0 THEN L2 ( I ) =BINEOR (L2 ( I ) , -32768) 




2360 


NEXT I 




2370 


RETURN 




2380 


! 




2390 


! Write record on -files. 




2400 


Jl=32* (G-l)+l 




2410 


J2=32*G 




2420 


K=0 




2430 


FOR I=J1 TO J2 





41 



2440 

2450 

2460 

2470 

2480 

2490 

2500 

2510 

2520 

2530 

2540 

2550 

2560 

2570 

2580 

2590 

2600 

2610 

2620 

2630 

2640 

2650 

2660 

2670 

2680 

EN", 

2690 

2700 

2710 

2720 

2730 

2740 

2750 

2760 

2770 

2780 

2790 

2800 

2810 

2820 

2830 

2840 

ANGE 

2850 

2860 

2870 

2880 

2890 

2900 

2910 

2920 

2930 



K=K+1 

F2<I)=F(I)-F1 (K) 
Fl (K)=F(I) 
D3(K)=D(I) 
NEXT I 

IF Y(G> >1 THEN 2510 
Dl (G)=DO I? Tl (G)=T0 
CRT OFF 



PRINT# 
PRINT# 
CRT ON 
RETURN 



G,2 ; Y<G> ,D1 (G) ,T1(G) ,DO,TO,G 
G,Y(G)+2 ; T0,D0,F1 () ,D3(") ,L1 <) j,L2() 



! Manu, Auto project # 1,2. 
ON TIMER# 1,T8(1)*60000 GOTO 2580 
T7 ( 1 ) =RMD ( T I ME+TS ( 1 ) *60 , 86400 ) 
G=l 

GOTO 2650 

ON TIMER# 2,T8<2)*60000 GOTO 2620 
T7 (2) =RMD <TIME+T8 (2) * 60, 86400) 
G=2 

IF Y(G)<100 THEN 2700 
BEEP 

PRINT USING 2680 ; G 

IMAGE "*****ERROR - MAX # OF SCANS" ,/, "FOR PROJECT # ",D, 
/, "REACHED. " 
GOTO 730 

CLEAR I? ENABLE KBD 
GOSUB 970 
IF 0#0 THEN 730 
GOSUB 1400 
Y(G)=Y(G)+1 
GOSUB 2400 
CRT OFF 
PRINT USING 



HAS BE 



",D," **#**" 



2780 ; G 
,3/,5X, "*****PROJECT 
USING 2800 ; Y(G) 
"SCAN # ",DDD 
"TIME: ",HMS*(TO) 

"DATE: ",MDY*(DO+MDY(" 12/31/1981") ) 
USING 2840 
2/, "CHANNEL ENGR. NET uMUXNAME 



IMAGE 
PRINT 
IMAGE 
PRINT 
PRINT 
PRINT 
IMAGE 
DATA" 

PRINT " 

FOR 1=21 TO 30 

F (I ) =F (I ) * 1 000000 I? 

NEXT I 

FOR I=32*<G-1)+1 TO 

IF S(I)=0 THEN 3050 

Q=IP(I/17)-»-l 

IF G=2 THEN Q=IP ( ( 1-32) / 17) +1 

Ql=I-16*Q-32*G+47 



UNITS 



CH 



F2 ( I ) =F2 < I ) * 1 000000 
32*G 



42 

2940 K=a*(l-1>+1 

2950 K1=K>7 

2960 J=0 

2970 IF BIT(L1 (Q) ,Q1) THEN J=J+1 

2980 IF BIT(L2(Q) ,Q1> THEN J=J+2 

2990 IF J=0 THEN A*=" 

3000 IF J=l THEN A*="LOW" 

3010 IF J=2 THEN A*="HIG" 

3020 IF J=3 THEN A*="ERR" 

3030 PRINT USING 3040 ; H*CK, Kl D , F ( I ) , F2 ( I ) , D ( I ) 

3040 IMAGE 8A,X,MDDDDD.DDD, X, MDDD. DD, X, 3Z 

3050 NEXT I 

3060 PRINT USING 3070 

3070 IMAGE 5/ 

3080 GOTO 730 

3090 ! 

3100 ! Auto, project #1,2. 

3110 G=l 

3120 GOTO 3140 

3130 G=2 

3140 IF A(G)=0 THEN 3180 

3150 A<G)=0 

3160 OFF TIMER# G 

3170 GOTO 730 

3180 A(G)=1 

3190 CLEAR 

3200 ENABLE KBD 1 

3210 ON ERROR GOTO 3190 

3220 LINPUT "Input time interval between scans (MIN=3 min, MAX=1440 min 

) " , A* 

3230 T3=VAL(A*) 

3240 IF T3<3 THEN 3190 

3250 IF T3>1440 THEN 3190 

3260 LINPUT "Input time elapse be-for start (MIN=0 min,MAX=1440 min)" 

,A$ 

3270 T9=VAL(A*) 

3280 IF T9<0 THEN 3260 

3290 IF T9>1440 THEN 3260 

3300 IF T9=0 THEN T9=.0005 

3310 OFF ERROR 

3320 T8(G)=T3 

3330 IF G=l THEN ON TIMER# G,T9*60000 GOTO 2580 

3340 IF G=2 THEN ON TIMER# G,T9*60000 GOTO 2620 

3350 T7 (G) =RMD (TIME+T9* 60, 86400) 

3360 GOTO 730 

3370 ! 

3380 ! Display o-f data. 

3390 G=l 

3400 GOTO 3420 

3410 G=2 

3420 CLEAR i? ENABLE KBD 255 

3430 GOSUB 970 



43 



3440 IF 0#0 THEN 730 

3450 GOSUB 1400 

3460 Jl=32*(G-l)-»-l 

3470 J2=32*G 

3480 I=J1-1 

3490 ENABLE KBD 1 

3500 DISP "Input channel # to be displayed" 

3510 DISP USING 3520 ; J1,J2 

3520 IMAGE 2/, 2X, DD, "-" , DD, 3X, "= channel -for display" ,/,"- END LINE='= n 

ext channel " 

3530 DISP USING 3540 

3540 IMAGE 4X,"0",5X,"= exit display ",3/ 

3550 ON ERROR GOTO 3640 

3560 LINPUT "Channel #:",A* 

3570 J=VAL(A$) 

3580 OFF ERROR 

3590 IF J=0 THEN 730 

3600 IF J<J1 THEN 3550 

3610 IF J>J2 THEN 3550 

3620 I=J 

3630 GOTO 3670 

3640 OFF ERROR 

3650 1=1+1 

3660 IF I>J2 THEN I=J1 

3670 Q=IP(I/17)+1 

3680 IF G=2 THEN Q=IP ( ( 1-32) / 17) +1 

3690 Ql=I-16*Q-32*G+47 

3700 K=8*(I-1)+1 

3710 Kl=K-t-7 

3720 CLEAR 

3730 DISP USING 3740 



K, /, "Channel valu 



MDD.DDD 



i,h*ck,k:id,f(I) 

3740 IMAGE "Channel #",6X,"= ", DD, /, "Title" , lOX, "= 

e",2X,"= ",MD.DDDe 

3750 DISP USING 3760 ; D<I),V(I) 

3760 IMAGE "Raw data",7X,"= " , 3Z, /, "Vol tage" , SX, "= 

3770 DISP USING 3780 ; BIT (LI (Q) , Ql ) , BIT (L2 (Q) , Ql > 

3780 IMAGE "Low",12X,"= " , D, / , "Hi gh" , 1 1 X, "= ",D,8/ 

3790 GOTO 3550 

3800 ! 

3810 ! Help. 

3820 ENABLE KBD 1 i? CLEAR 

3830 DISP USING 3840 

3840 IMAGE 9X , " *****HELP*****" , 2/ 

3850 DISP "The keys operate as -follows:" 

3860 DISP USING 3870 

3870 IMAGE 1/,"K1= 'MANUAL' acquisition pro j . 1 " , / , "K2= 'MANUAL- acquis 

i tion proj . 2" 

3880 DISP USING 3890 

3890 IMAGE "K3= 'AUTO' acquisition proj 

roj.2" 

3900 DISP USING 3910 

3910 IMAGE "K5= 'DISPLAY' data -for proj 



1",/,"K4= 'AUTO' acquisition p 



1",/,"K6= 'DISPLAY' data -For p 



■ Bwot 



44 



",/,"KS= 'EXIT' module ' ACQUIR'" , 3/ 
LINE' -For more help", A* 



roj.2" 

3920 DISP USING 3930 

3930 IMAGE "K7= 'HELP= 

3940 L INPUT "Hit 'END 

3950 CLEAR 

3960 DISP USING 3970 

3970 IMAGE 2/, "Note: the max # o-f scans that can be stored -for each pr 

oj. is 100." 

3980 DISP USING 3990 

3990 IMAGE "In 'DISPLAY' 

n",/, "-files. ",7/ 

4000 L INPUT "Hit 'END LINE' to 

4010 GOTO 730 

4020 ! 

4030 

4040 

4050 

4060 

4070 

4080 

4090 

4 1 00 



mode, the data" ,/, "taken will not be stored i 
return", A* 



KBD 
OFF 



! Exit. 

CLEAR I? ENABLE 
OFF TIMER# 1 I? 
ASSIGNS 1 TO * 
ASSIGNtt 2 TO * 
ENABLE KBD 33 i? CRT ON 
CHAIN "CONTRL" 
END 



O 
TIMER# 2 



45 



MODULE 'ACQUIR' 



1 00 

102 

104 

106 

108 

110 

112 

1,Q, 

114 

116 

118 

120 

124 
126 
128 
1 30 
132 
134 
136 
138 
140 
142 
144 
146 
148 
150 
152 
154 
156 
158 
160 
162 
164 
166 
168 
170 
172 
174 
175 
176 
177 
178 
180 
132 
184 
186 
188 
190 
192 
194 
196 



This is module 'ACQUIR'. 
It is the acquiring seg- 
ment o-f data acquisition 
program 'MDAP85'. 

OPTION BASE 1 

DIM P*C643,H*C512D,B$C204] 

INTEGER M,T,N,E(2> ,X(2) ,R(64) ,S<64) ,D0,D1(2) ,D2,D(64) ,Y(2) 

Q1,L1 (2) ,L2(2) ,G,0 

INTEGER Z(3,6) , Jl , J2, D3 (32) , L3 (2, 16) , L4 (2, 16) , A (2) 

SHORT C(9,64) ,V(64) ,F(64) ,F1 (32) ,Z1 (6) ,V1,F2(32) 

REAL T0,T1 (2) , T2, T3, T4, T5, T6, T7 (2) ,T8(2) ,T9,U 

D2=DATE I? T2=TIME 

CLEAR 

DISP USING 126 

IMAGE 9X, "MODULE 'ACQUIR"',2/ 

DISP "TIME: ",HMS$(T2) 

DISP "DATE: ", MDY* (D2+MDY (" 12/31/1981 ") ) 

DISP USING 134 

IMAGE 3/, " Wait" 

WAIT 2000 I? ENABLE KBD 
I 

! Read parameter -file. 



I,J,K,K 



ASSIGNtt 
CRT OFF 
READ# 1 
CLEAR 
ASSIGNtt 



1 TO "PFILE" 



N,M,T,E() ,X() ,R() ,S() ,C(, ) ,P*,H$ 



1 TO * 



! Initialize variables. 

Dl (1)=D2 I? Dl (2)=D2 

Tl (1)=T2 I? Tl (2)=T2 

Y(1)=0 I? Y(2)=0 

A(1)=0 I? A(2)=0 

FOR 1=1 TO 6 

Z 1 ( I ) =0 

FOR J=l TO 3 

Z(J, I)=0 

NEXT J 

NEXT I 

FOR J=l TO 32 

Fl (J)=0 

NEXT J 

! Create output -files. 

ON ERROR GOTO 192 

ASSIGNtt 1 TO "FILEOl" 

OFF ERROR 



P*C 1, 30], H*C 1,256] 
Yd) ,D1 (1) ,T1 (1) 



PRINTtt 1,1 

READ# 1,2 

GOTO 203 

OFF ERROR 

CREATE " F I LEO 1 " , 1 02 , 586 

ASSIGNtt 1 TO "FILEOl" 



46 



m^mrutntiMm^ fa 



198 

200 
202 
203 
204 
206 
208 
210 
rr* 1 TJ 

214 
216 
218 
220 

224 
226 
228 
230 
232 
234 
236 
238 
240 

244 
246 
248 
250 

254 
256 
258 
260 
262 
264 
266 
268 
270 
272 
274 
276 
278 
280 
282 
2S4 
286 
288 
290 

294 
296 
298 



CRT OFF 

PRINT# 1,1 ; P*C 1, 30], H*C 1,2563 

PRINT# 1,2 ; Yd) ,D1 (1) ,T1 (1) ,D2,T2, 1 

IF N=l THEN GOTO 230 

ON ERROR GOTO 218 

ASSIGN# 2 TO "FILE02" 

OFF ERROR 

PRINT# 2,1 ; P$C31, 603, H*C257, 5123 

READ# 2,2 ; Y (2) , Dl (2) , Tl (2) 

OFF ERROR 

GOTO 234 

OFF ERROR 

CREATE " F I LE02 " ,102, 586 

ASSIGN# 2 TO "FILE02" 

CRT OFF 

PRINT# 2,1 ; P$C31,60],H*[257, 

PRINT# 2,2 ; Y (2) , 01(2) , Tl (2) , 



5123 
D2,T2,2 



! Key assignments 
ENABLE KBD 32 
ON KEY# 1, "MANU 
"MANU 



ON 
ON 
ON 
ON 
ON 
ON 
ON 



k:ey# 

KEY# 
KEY# 
KEY# 
KEY# 
KEY# 
KEY# 



1" 


GOTO 


598 


7 " 


GOTO 


606 


1" 


GOTO 


694 


f " 


GOTO 


698 


1" 


GOTO 


750 


c* " 


GOTO 


754 




GOTO 


836 




GOTO 


880 



"AUTO 

4, "AUTO 

5, "DISP 

6, "DISP 

7, "HELP 

8, "EXIT 
CLEAR I? KEY LABEL 
DISP USING 256 
IMAGE 3/, " ***** 
DISP USING 260 
IMAGE "Proj #1: 
FOR 1=1 TO 2 
IF A<I)=0 THEN 270 
DISP USING 268 ; I , HMS* (T7 ( I ) ) 
IMAGE "AUTO ",D," lictive at ",K 
NEXT I 
GOTO 272 

! Call to 'MICROMUX' . 
0=0 

lOBUFFER B* ! Usable 196 
ASSERT 10; (2+4) ! DCD+DSR 
ON TIMER# 3,30000 GOTO 336 
STATUS 10,3 ; I ! Modem 
IF BINANDd, 1)=0 THEN 286 
WAIT 50 ! Wait for relay 
SET TIMEOUT 10; 8000 
ON TIMEOUT 10 GOTO 342 
ON EOT 10 GOTO 312 
STATUS 10,9 ; I 



ACQUIR=' options*****", 2/ 
Yd) ,Y(2) 
",DDD," scan (s) "/"Proj #2: ",DDD, 



scan (s) ",2/ 



47 



300 
302 
304 
306 
30S 
310 
312 
314 
316 
318 
320 

324 
326 
328 
330 

334 
336 
338 
340 
342 
344 
346 
348 
350 

354 
356 
358 
360 
362 
364 
366 
368 
370 
372 
374 
376 
378 
380 
382 
384 
386 
388 
390 

394 

396 

JECT 

398 

400 



CONTROL 10,9 ; 133 ! Flush 

OUTPUT 10 USING "#,Z,A" ; M, "?" 

ASSERT 10; (1+2+4) ! CTS on 

ON TIMER# 3,8000 GOTO 342 

TRANSFER 10 TO B* INTR ; COUNT T*49 

GOTO 310 ! Wait 

OFF TIMER# 3 

ASSERT 10; 4 ! DCD?<CTS o-f-f 

TO=TIME 

DO=DATE 

FOR I=T TO 1 STEP -1 

K=16*(I-1) 

FOR J=l TO 16 

ENTER B$ USING "#,3Z" ; D(J+K) 

NEXT J 

ENTER B* USING "#,X" 

NEXT I 

;54 



GOTO 

0=1 

BEEP I? PRINT 

GOTO 346 

0=1 

BEEP I? PRINT 

OFF TIMER# 3 

OFF TIMEOUT 10 

OFF EOT 10 I? HALT 

ASSERT 10; ! All 

RETURN 



'*****ERROR - MICRQMUX IS BUSY' 



"*****ERROR 



10 
o-f-f 



NO DATA RECIEVED" 



Lin i t . 



! Change to engin 

LI (1)=-1 I? LI (2)=-l 

L2(l)=-1 I? L2(2)=-l 

FOR 1=1 TO 16 

L3(l, I)=0 I? L3(2, I>=0 

L4(l, I)=0 I? L4(2, I>=0 

NEXT I 

J=E(G) 

ON ERROR GOTO 394 

V(J)=C(1, J)*D(J)+C(2, J) 

F<J)=V<J) 

V1=V(J) 

K=IP(J/17)+1 

IF G=2 THEN K=IP ( ( J-32) / 17) +1 

Kl=J-16*K-32*G+48 

IF F(J)<C(8,J) THEN 

IF F(J) >C(9, J) THEN 

GOTO 398 

print using 396 ; g 
image "*****error - 
. ;d 
for i=32*(g-1)+1 to 32*g 
on error goto 478 



L3(K,K1) 
L4(K,K1) 



CONVERSION OF DATA" ,/, "EXCITATION CHANNEL, PRO 



nnniin— iMnnnnnnrTTHn 



48 



402 IF I=J THEN 494 

404 V(I)=C(1, I)*D<I)+C(2, I) 

406 Q=IP(I/17)+1 

408 IF G=2 THEN Q=IP ( ( 1-32) / 17) +1 

410 Ql=I-16*Q-32*G+4a 

412 IF RdXll THEN 428 

414 J1=IP(R(I)/10) 

416 J2=RMD(R(I) , 10) 

418 IF Jl>3 THEN 464 

420 IF J2<1 THEN 464 

422 IF J2>6 THEN 464 

424 Z(J1,J2)=I 

.426 ON X(G) GOTO 438,452 

428 ON R(I)+1 GOTO 430,434,438,442,448,452,460,464,464,464,464 

430 F(I)=V(I) 

432 GOTO 470 

434 F(I)=C(3, I)*V(I)-C(4, I) 

436 GOTO 470 

438 F(I)=C(4, I)*V(I)/(C(6, I)*V1)-C(5, I) /C(6, I) 

440 GOTO 470 

442 U=LOG< (V1/V(I)-1) *C(4, I) ) 

444 F(I)=1/(C(3, I)*U+C(4, I) )-C(5, I) 

446 GOTO 470 

448 F(I)=C(4, I)*V(I)/(C(6, I)*V1)+C(5, I)/C(6, I)+C(3, I) 

450 GOTO 470 

452 F(I)=C(3, I)*D<I)*Vl/5.0075+C(4, I) 

454 ! NEW EXTENSOMETER 

456 ! REDUCTION FORMULA 

458 GOTO 470 

460 F<I)=4*V(I>/(V1*C(4, I) )-C(5, I) 

462 GOTO 470 

464 V(I)=0 

466 F(I)=0 

468 GOTO 494 

470 IF R(I)>10 THEN 494 

472 IF F(I)<C(S,I) THEN L3(Q,Q1)=1 

474 IF F(I)>C(9,I) THEN L4(Q,Q1)=1 

476 GOTO 494 

478 IF 0=1 THEN 484 

480 0=1 I? BEEP I? PRINT USING 482 ; Y(G)+1 

482 IMAGE "*****ERROR - CONVERSION OF SCAN: " , / , DDD, " CHANNEL(S) 

484 PRINT USING 486 ; I 

486 IMAGE 15X,DDD 

488 V(I)=0 ft' F(I)=0 

490 L3(Q,Q1)=1 

492 L4(Q,Q1)=1 

494 NEXT I 

496 FOR J 1 = 1 TO 3 

498 ON ERROR GOTO 502 

500 Zl (1)=F(2 (Jl, 1) ) 

502 FOR J 2=2 TO 5 

504 ON ERROR GOTO 508 



49 



506 
508 
5 1 
512 
514 
516 
518 
520 

524 
526 
528 
530 

534 
536 
538 
540 
542 
544 
546 
548 
550 
552 
554 
556 
558 
560 
562 
564 
566 
568 
569 
570 
572 
574 
576 
578 
580 
582 
584 
586 
588 
590 
592 
594 
596 
598 
600 
602 
604 
606 



Zl (J2)=Z1 (l)-F(Z(Jl, J2) > 

NEXT J2 

FOR J2=l TO 5 

ON ERROR GOTO 532 

I=Z (Jl, J2) 

Z(J1, J2)=0 

F(I)=Z1 (J2> 

Z1(J2)=0 

Q=IP(I/17)H-1 

IF G=2 THEN Q=IP ( (1-32) / 17) +1 

Ql=I-16*Q-32*G+48 

IF F(I)<C(8, I) THEN 

IF F(I) >C(9, I) THEN 

NEXT J2 

NEXT Jl 

OFF ERROR 

FOR 1=1 TO 2 

FOR J=l TO 15 

IF L3(I,J)=0 THEN 

IF L4(I,J)=0 THEN 

NEXT J 

IF L3(I, 16) =0 

IF L4(I, 16) =0 

NEXT I 

RETURN 



L3(Q,Q1)=1 
L4(Q,Q1)=1 



LI (I)=L1 (I)-2-(J-l) 
L2(I)=L2(I)-2-"-(J-l) 



THEN LI (I)=BINE0R<L1 (I) ,-32768) 
THEN L2 ( I ) =B I NEOR ( L2 (I ) , -32768 ) 



! Write record on -files. 

J 1=32* (G-l)+l 

J2=32*G 

K=0 

FOR I=J1 TO J2 

K=K+1 

F2(I)=F(I)-F1 (K) 

F 1 ( K ) =F (I ) 

D3(K)=D(I) 

NEXT I 

IF Y(G) >1 THEN 580 

D 1 ( G ) =D0 li' TUG) =T0 

CRT OFF 

PRINT# G,2 ; Y (G) , Dl (G) , Tl (G) , DO, TO, G 

PRINT# G,Y(G)H-2 ; TO, DO, Fl ( ) , D3 ( ') , LI () 

CRT ON 

RETURN 
I 

! Manu, Auto project # 1,2. 

ON TIMERtt 1,T8(1)*60000 GOTO 594 

T7 (1 ) =RMD (TIME+TS ( 1 ) #60, 86400) 

G=l 

GOTO 608 

ON TIMERtt 2,T8(2) *60000 GOTO 602 

T7 ( 2 ) =RMD ( T I ME+T8 ( 2 ) *60 , 86400 ) 

G=2 



L2() 



50 








60S 


IF Y(G)<100 THEN 618 






610 


BEEP 






612 


PRINT USING 614 ; G 






614 


IMAGE "*****ERRGR - MAX # OF SCANS" ,/, "FOR PROJECT # 


",D, " HAS BEE 1 


N", /, "REACHED. " 






616 


GOTO 234 






618 


CLEAR li' ENABLE KBD 






620 


GOSUB 278 






622 


IF 0#0 THEN 234 






624 


GOSUB 360 






626 


Y(G)=Y(G)+1 






628 


GOSUB 560 






630 


CRT OFF 






632 


PRINT USING 634 ; G 






634 


IMAGE ,3/,5X, "*****PROJECT ",D," *****" 






636 


PRINT USING 638 ; Y(G) 






638 


IMAGE "SCAN # " , DDD 






640 


PRINT "TIME: ",HMS$(TO) 






642 


PRINT "DATE: ", MDY$ (DO+MDY (" 12/31 / 1981 ") ) 






644 


PRINT USING 645 






645 


IMAGE 2/, "CHANNEL ENGR. NET uMUXNAME 


UNITS 


CHA 


NGE 


DATA" 






646 


iZ'C'TMT " " 






rKiN 1 


647 


FOR 1=21 TO 30 






648 


F ( I ) =F ( I ) * 1 000000 li' F2 ( I ) =F2 ( I ) * 1 000000 






649 


NEXT I 






650 


FOR I=32*(G-1)+1 TO 32*G 






652 


IF S(I)=0 THEN 682 






654 


Q=IP(I/17)+1 






656 


IF G=2 THEN Q=IP ( (1-32) / 17) +1 






658 


ai=I-16*D-32*G+47 






660 


K=8*(I-1)+1 






662 


Kl=K+7 






664 


J=0 






666 


IF BIT(L1 <Q) ,Q1) THEN J=J+1 






668 


IF BIT(L2(Q) ,Q1) THEN J=J+2 






670 


IF J=0 THEN A*=" 






672 


IF J=l THEN A*="LOW" 






674 


IF J=2 THEN A*="HIG" 






676 


IF J=3 THEN A*="ERR" 






678 


PRINT USING 680 ; H*CK, Kl ] , F ( I ) , F2 < I) , D ( I ) 






680 


IMAGE SA, X,MDDDDD.DDD, X , MDDD. DD, X , 32 






682 


NEXT I 






684 


PRINT USING 686 






686 


IMAGE 5/ 






688 


GOTO 234 






690 


1 






692 


! Auto, project # 1,2. 






694 


G=l 






696 


GOTO 700 






698 


G=2 






700 


IF A(G)=0 THEN 708 







51 



702 

704 

706 

70S 

710 

712 

714 

716 

", A* 

718 T.: 

720 

722 

724 

A* 

726 

72S 

730 

732 

734 

736 

738 

740 

742 

744 

746 

748 

750 



A(G)=0 

OFF TIMER# G 

GOTO 234 

A(G)=1 

CLEAR 

ENABLE KBD 1 

ON ERROR GOTO 710 

LINPUT "Input time interval between scans 



VAL(A$) 
IF T3<3 THEN 710 
IF T3>1440 THEN 710 
LINPUT "Input time elapse be-for start 



(MIN= 



min,MAX=1440 min) 



(MIN=0 min,MAX=1440 min) 



T9=VAL(A$) 

IF T9<0 THEN 724 

IF T9>1440 THEN 724 

IF T9=0 THEN T9=.0005 

OFF ERROR 

T8(G)=T3 

IF G=l THEN ON TIMER# 

IF G=2 THEN ON TIMER# 

T7 (G) =RMD <TIME+T9* 60, 86400) 

GOTO 234 



o-f data. 



G,T9*60000 GOTO 594 
G,T9*60000 GOTO 602 



754 

756 

758 

760 

762 

764 

766 

768 

770 

772 

774 

776 

xt 

778 

780 

782 

784 

786 

788 

790 

792 

794 

796 

798 



! Display 
G=l 

GOTO 756 
G=2 

CLEAR I? ENABLE KBD 
GOSUB 278 
IF 0#0 THEN 234 
GOSUB 360 
J1=32*(G-1)+1 
J2=32*G 
I=J1-1 

ENABLE KBD 1 

DISP "Input channel # to 
DISP USING 776 ; J1,J2 
IMAGE 2/,2X,DD, "-",DD,3X, "= channel 
channel " 
DISP USING 780 
IMAGE 4X,"0",5X,"= exit display ",3/ 



be displayed" 

■for display' 



/, "^END LINE='= ne 



ON ERROR GOTO 800 

LINPUT "Channel #; 

J=VAL(A$) 

OFF ERROR 

IF J=0 THEN 234 

IF J<J1 THEN 782 

IF J>J2 THEN 782 

I=J 

GOTO 806 



A$ 





52 




800 


OFF ERROR 


802 


1 = 1 + 1 


804 


IF I>J2 THEN I=J1 


806 


Q=IP(I/17)+1 


808 


IF G=2 THEN Q=IP ( (1-32) / 17) +1 


810 


Ql = I-16.*Q-32*G+47 


812 


K=8*(I-1)+1 


814 


Kl=K+7 


816 


CLEAR 


818 


DISP USING 820 ; I , H$CK, Kl ] , F ( I ) 


820 


IMAGE "Channel #",6X,"= ", DD, /, "Title" , lOX, "= ", K, /, "Channel value 


",2X, "= ",MD.DDDe | 


822 


DISP USING 824 ; D(I),V(I) 


824 


IMAGE "Raw data",7X,"= ", 3Z, /, "Vol tags" , 8X , "= ",MDD.DDD 


826 


DISP USING 828 ; BIT (Ll(Q) , Ql ') , BIT (L2 (Q) , Ql ) 


828 


IMAGE "Low",12X,"= " , D, / , "Hi gh " , 1 1 X , "= ",D,8/ 


830 


GOTO 782 


832 


! 


834 


! Help. 


836 


ENABLE KBD 1 i? CLEAR 


838 


DISP USING 840 


840 


IMAGE 9X, "*****HELP*****",2/ 


842 


DISP "The keys operate as -follows:" 


844 


DISP USING 846 


846 


IMAGE 1/,"K1= 'MANUAL' acquisition pro j . 1 " , / , "K2= 'MANUAL' acquis! 


tion proj.2" | 


848 


DISP USING 850 1 


850 


IMAGE "K3= 'AUTO' acquisition proj . 1 " , /, "K4= 'AUTO' acquisition pr 1 


oj.2" 1 


852 


DISP USING 854 1 


854 IMAGE "K5= =" DISPLAY' data -for proj . 1 " , /, "K6= 'DISPLAY' data -for pr 1 

r-, -i ^ " B 


856 


DISP USING 858 


858 


IMAGE "K7= 'HELP' ", /, "K8= 'EXIT' module 'ACQUIR'",3/ 


860 


LINPUT "Hit 'END LINE' -for more help". A* 


862 


CLEAR 


864 


DISP USING 866 


866 


IMAGE 2/, "Note: the max # o-f scans that can be stored -for each pro 


j . is 100. " 1 


868 


DISP USING 870 


870 


IMAGE "In 'DISPLAY' mode, the data" ,/, "taken will not be stored in 


",/ = 


. "-files. ",7/ 


872 


LINPUT "Hit 'END LINE' to return", A* 


874 


GOTO 234 


876 


1 


878 


! E>: i t . 


880 


CLEAR IP ENABLE KBD 


882 


OFF TIMER# 1 1? OFF TIMER# 2 


884 


ASSIGNtt 1 TO * 


886 


ASSIGNS 2 TO * 


888 


ENABLE KBD 33 i? CRT ON 


890 


CHAIN "CONTRL" 


892 


END 



53 



MODULE 'INPUT' 



1 00 
1 02 
1 04 
106 

loa 

110 
112 
114 
116 
118 
120 
124 
126 
128 
1 30 
132 
134 
136 
138 
1 40 
142 
144 
146 
148 
150 
152 
154 
156 
158 
160 
162 
164 
166 
168 
170 
172 
174 
176 
178 
180 
182 
184 
186 
188 
190 
192 
194 
196 
198 
200 
202 
204 



! This is module - INPUT ^ . 

! It is the input segment 

! o-f data acquisition 

! program ■■"MDAP85^. 

OPTION BASE 1 

DIM P$C64],H*C512] 

INTEGER M,T,N,E(2) 

SHORT C(9,64) 

CLEAR 

DISP USING 120 

IMAGE 9X, "MODULE 

ENABLE KBD 
1 



Z*C512: 

X(2) ,R(64) ,S(64) 



I NPUT '■ 



Wait 



! Read -file. 

ON ERROR GOTO 144 

ASSIGN# 1 TO "PFILE" 

CRT OFF 

READ# 1 ; 

CLEAR 

ASSIGNtt 1 

OFF ERROR 

OFF ERROR 



N,M,T,E() ,X() ,R() ,S(> ,C(, ) ,P*,H* 



TO * 
li' GOTO 



190 



! Initialize variables. 

M=0 

T=4 

N=2 

Ed) =0 

E(2)=0 

X ( 1 ) =0 

X ( 2 ) =0 

FOR 1=1 TO 64 

R (I ) =0 

S<I)=1 

p*:n = ". " 

FOR J=l TO 9 

C(J, I)=0 

NEXT J 

NEXT I 

FOR 1=1 TO 512 

H$CI]=". " 

NEXT I 



! Key assignments. 
ENABLE KBD 32 
P0=0 

1, "GENERAL" 



ON 
ON 
ON 
ON 
ON 
ON 



KEY# 
KEY# 
KEY# 
KEY# 
KEY# 
KEY# 



2, "PROJECT" 
3, "CHANNEL" 
4, "PRINT 1" 
5, "PRINT 2" 
6, "HELP 



GOTO 
GOTO 
GOTO 
GOTO 
GOTO 
GOTO 



220 
278 
354 
470 
474 
530 



54 








206 


ON KEY# 7, "EXIT " GOTO 578 






208 


CLEAR \l' KEY LABEL 






210 


DISP USING 212 






212 


IMAGE 3/," *****MNPUT=' options*****" 






214 


GOTO 214 






216 


1 






218 


! General inputs. 






220 


ENABLE KBD 33 






222 


ALPHA 1,1 1? CLEAR 






224 


L1=CURSR0W 






776 


DISP USING 228 






228 


IMAGE 4X, "*****GENERAL INPUTS***** ", 3/ 






230 


DISP USING 232 ; M 






232 


IMAGE "Address o-f ='MICROMUX^= " , DD 






234 


DISP USING 236 ; T 






236 


IMAGE "# o-f --MICROMUX' trans= " , DD 






238 


DISP USING 240 ; N 






240 


IMAGE "# O-F projects = ",DD,9/ 






242 


IF P0#0 THEN 492 






244 


ALPHA LH-13, 1 






246 


ON ERROR GOTO 250 






248 


LINPUT "Inputs ok(Y)?",A* 






250 


ALPHA Ll,l 1? OFF CURSOR 






252 


AREAD Z* 






254 


ON ERROR GOTO 222 






256 


M=ABS(VAL (TRIM* (Z$C 119, 1283) ) ) 






258 


T=ABS<VAL(TRIM$(Z*C151, 160D) ) ) 






260 


N=ABS(VAL(TRIM$(Z*C133, 192:) ) ) 






262 


IF T<1 THEN 222 






264 


IF T>4 THEN 222 






266 


IF N<1 THEN 222 






268 


IF N>2 THEN 222 






270 


OFF ERROR 






272 


GOTO 190 






274 


! 






276 


i Project inputs. 






278 


ENABLE KBD 33 






280 


FOR 1=1 TO N 






282 


ALPHA 1,1 1? CLEAR 






284 


L1=CURSR0W 






286 


DISP USING 288 ; I 






288 


IMAGE 3X, "*****PRQJECT INPUTS <", Z ,") *****" 


,3/ 




290 


ON ERROR GOTO 282 






292 


LINPUT "Project #:",K* 






294 


N1=VAL(K*) 






296 


IF NKl THEN 282 






298 


IF Nl>2 THEN 282 






300 


J1=1+30*<N1-1) 






302 


J2=Jl+29 






304 


DISP USING 306 ; P*CJ1,J23 






306 


IMAGE "Project ID (max is 30 chars. )=",/, K 


,2/ 




308 


DISP USING 310 ; E(N1) 







55 

310 IMAGE "Channel # for excit = " , DD 

312 DISP USING 314 ; X(N1) 

314 IMAGE "'EXTENSOMETER' type = ",DD,5/ 

316 IF P0#0 THEN 512 

318 ALPHA Ll+13, 1 

320 ON ERROR GOTO 324 

322 LINPUT "Inputs ok(Y>?",A* 

323 IF A*="Y" THEN 190 

324 ALPHA Ll,l i? OFF CURSOR 
326 AREAD Z* 
328 ON ERROR GOTO 282 
330 P*CJ1, J23=Z*C193,222: 
332 E(N1)=ABS(VAL(TRIM*(Z*C279,288D) ) ) 
334 X(N1)=ABS<VAL(TRIM$(Z*[:31 1,3203) ) ) 
336 IF E (NIX 1+32* (Nl-1) THEN 282 
338 IF E(N1)>32*N1 THEN 282 
340 IF X(N1)<1 THEN 282 I 
342 IF X(N1)>2 THEN 282 J 
344 OFF ERROR \ 
346 NEXT I ! I 
348 GOTO 190 ' I 
350 ! I 
352 ! Channel inputs. ' 
354 ENABLE KBD 33 
356 CLEAR 

358 DISP USING 360 

360 IMAGE 4X, "*#**)KCHANNEL INPUTS*****" 
362 DISP USING 364 

364 IMAGE 3/, "Input channel # -for each ",/, "channel . " 
366 DISP USING 368 

368 IMAGE /,"Note: a 'O' -for channel # wi 1 1 " , / , "exi t this routine", 2/ 
370 ON ERROR GOTO 372 
372 LINPUT "Channel #:",K* 
374 N1=VAL(K*) 
376 IF N1=0 THEN 462 
378 IF NKO THEN 372 
380 IF Nl>64 THEN 372 
382 ALPHA 1,1 i? CLEAR 
384 L1=CURSR0W 
386 OFF ERROR 
388 DISP USING, 390 ; Nl 

390 IMAGE 7X, "***Channel ",2D," *♦*", 
392 J1=8*(N1-1)+1 
394 J2=Jl+7 

396 DISP USING 398 ; H*CJ1,J2D 
398 IMAGE "Title (8 char) = ",K 
400 DISP USING 402 ; R(N1) 
402 IMAGE "Reduction type = " , DD 
404 DISP USING 406 ; S(N1) 
406 IMAGE "Printing -flag = " , DD 
408 DISP USING 410 ; C ( 1 , Nl ) , C (2, Nl ) , C (3, Nl ) 
410 IMAGE "C0",13X,"= " , MD. DDDDE, / , "CI " , 13X , "= " , MD. DDDDE, / , "C2" , 13X , " 



■*******»******'—*—*» 



56 



_ II 

~ J 


MD.DDDDE 






412 


DISP USING 414 ; C (4, Nl ) , C (5, Nl ) , C (6, Nl ) 






414 


IMAGE "C3",13X,"= " , MD. DDDDE, /, "C4" , 13X, " = 


", MD.DDDDE,/, 


"C5", 13X, " 


II 


MD.DDDDE 






416 


DISP USING 418 ; C(7,N1) 






418 


IMAGE "C6",13X,"= ", MD.DDDDE 






420 


DISP USING 422 ; C (8, Nl ) , C (9, Nl ) 






422 
,2/ 

424 


IMAGE "Low limit", 6X,"= " , MD. DDDDE, /, "High 


limit", 5X, "= 


", MD.DDDDE 


IF P0#0 THEN 520 






426 


ALPHA Ll+13, 1 






428 


ON ERROR GOTO 432 






430 


LINPUT "Inputs ok(Y)?",A* 






432 


ALPHA L 1 , 1 1? OFF CURSOR 






434 


ARE AD 1% 






436 


ON ERROR GOTO 382 






438 


H$CJ1, J2 3=TRIM*(Z*C49,64D) 






440 


R<N1)=ABS(VAL(TRIM*(Z*C81,96D) ) ) 






442 


S(N1)=ABS(VAL(TRIM*(Z$C113, 1283) > ) 






444 


IF R(N1> >36 THEN 382 






446 


IF S(N1) >1 THEN 382 






448 


FOR 1=1 TO 9 






450 


J1=32*(I-1)+145 






452 


J2=J1+15 






454 


C(I,N1>=VAL<TRIM*(Z*CJ1, J2:) ) 






456 


NEXT I 






458 


OFF ERROR 






460 


CLEAR li' GOTO 370 






462 


OFF ERROR 






464 


GOTO 190 






466 


1 






468 


! Print in-f ormations. 






470 


P0= 1 






472 


GOTO 476 






474 


P0=2 






476 


CLEAR 1? ENABLE KBD 






478 


CRT OFF 1? CRT IS 2 






480 


DISP " INPUT INFORMATION " 






482 


DISP "TIME: ",HMS*(TIME> 






484 


DISP "DATE: ", MDY* (DATE+MDY (" 12/31/1981 ") ) 






486 


n T cc' " " 






U i car 




488 


DISP " " 






490 


GOTO 226 






492 


DISP USING 494 






494 


IMAGE 4X, "*****PROJECT INPUTS*****" , 3/ 






496 


N1=P0 






498 


DISP USING 500 ; Nl 






500 


IMAGE "Project # =",3D 






502 


J 1 = 1+30* <N1-1) 






504 


J2=Jl+29 






506 


DISP USING 508 ; P*CJ1,J2] 






508 


IMAGE "Project ID=",/,K,2/ 







57 



510 GOTO 308 

512 DISP USING 514 

514 IMAGE 4X, "*****CHANNEL INPUTS*****" , 3/ 

516 FOR N1 = H-32*(P0-1) TO 32*P0 

518 GOTO 388 

520 NEXT Nl 

522 CRT IS 1 li' CRT ON 

524 GOTO 190 

526 ! 

528 ! Help. 

530 ENABLE KBD 1 i? CLEAR 

532 DISP USING 534 

534 IMAGE 9X , "*****HELP*****" , 2/ 

536 DISP "The keys operate as -follows:" 

538 DISP USING 540 

540 IMAGE l/,"H::i= 'GENERAL' i nputs" , / , "K2= 'PROJECT' inputs" ,/, "K3= 'C 

HANNEL' inputs" 

542 DISP USING 544 

544 IMAGE "K4= 'PRINT' inputs -for proj. 1",/,"K5= 'PRINT' inputs -for p 

roj. 2" 

546 DISP USING 548 

548 IMAGE "K6= ' HELP' " , /, "K7= 'EXIT' module 'INPUT' ",4/ 

550 L INPUT "Hit 'END LINE' -for more help", A* 

552 CLEAR 

554 DISP USING 556 

556 IMAGE 2/, "Note: in input, when the" ,/, "current values o-f paramete 

rs" 

558 DISP USING 560 

560 IMAGE "have been presented on CRT, " , /, "rol 1 the CURSOR to the appr 

opr-" 

562 DISP USING 564 

564 IMAGE "iate locations -for changing the" ,/, "inputs. ",/, "A-fter all c 

hanges are done, " 

566 DISP USING 568 

568 IMAGE "hit 'END LINE' to exit. ",5/ 

570 L INPUT "Hit 'END LINE' to return",A$ 

572 GOTO 190 

574 ! 

576 ! Exit. 

578 CLEAR 

580 OH ERROR GOTO 584 

582 CREATE " PF I LE " , 1 , 6800 

584 ON ERROR GOTO 600 

586 ENABLE KBD O 

588 ASSIGN# 1 TO "PFILE" 

590 CRT OFF 

592 PRINT# 1 ; N, M, T, E ( ) , X () , R ( ) , S ( ) , C ( , ) , P$, H* 

594 CRT ON 

596 ASSIGN# 1 TO * 

598 ENABLE KBD 255 

600 ON ERROR GOTO 604 

602 CHAIN "CONTRL" 

604 END 



58 



MODULE 'STORE' 



100 

102 

104 

108 

110 

112 

0,32 

114 

116 

iia 

120 
122 
124 
126 
128 
130 
132 
134 
136 
138 
140 
142 
144 
146 
148 
150 
152 
154 
156 
158 
160 
162 
164 
166 
168 
170 
172 
174 
176 
178 
ISO 
182 
184 
186 
188 
190 
192 
194 
196 
198 
200 
202 



This is module ^'STORE". 
It is the data storage 
segment o-f prog. 'MDAP85'. 
OPTION BASE 1 
DIM P$C30:,H*C256:,Z*C6: 
I NTEGER Lid 00 ) , L2 < 1 00 ) , L3 ( 1 00 ) 
) ,D4(32) , Yl 

SHORT F(100,32) ,F1 (32) 
REAL T(IOO) ,T1,T2 
CLEAR 

DISP " MODULE 'STORE'" 

WAIT 3000 
! Key assignments. 
ENABLE KBD 32 

ON KEY# 1, "STORE 1" GOTO 148 

"STORE 2" GOTO 158 

"HELP " GOTO 334 

"EXIT " GOTO 366 

KEY LABEL 

140 

*****=■ STORE' options*****' 



L4<100) ,D<100) ,D1,D2,Y,G, J,K,D3(10 



ON KEY# 
ON KEY# 
ON KEY# 
CLEAR I? 
DISP USING 
IMAGE 3/, " 



GOTO 142 
I 

! Store - FILEOl ' , ' FILE02' 

G=l 

CLEAR I? ENABLE KBD 

ON ERROR GOTO 192 

ASSIGN# 1 TO "FILEOl" 

GOTO 166 

G=2 

CLEAR I? ENABLE KBD 

ON ERROR GOTO 192 

ASSIGN# 1 TO "FILE02" 

OFF ERROR 

DISP USING 170 

IMAGE 3/, " Wait" 

WAIT 3000 

CLEAR I? CRT OFF 

READ# 1,1 ; P*,H* 

READ# 1,2 ; Y, Dl , Tl , D2, T2 

IF Y>0 THEN 200 

BEEP 

IF G=l THEN PRINT 

IF G=2 THEN PRINT 

ASSIGN# 1 TO * 

GOTO 126 

BEEP 

PRINT 



"*****ERROR - NO DATA (' FILEOl') 
"*****ERROR - NO DATA ('FILE02') 



"*****ERROR 
"*****ERROR 



OFF ERROR i? 

IF G=l THEN 

IF G=2 THEN PRINT 

GOTO 126 

Y1=0 I? ON ERROR GOTO 218 

FOR J=l TO Y 



ASSIGN 
ASSIGN 



'FILEOl' 
'FILE02' 



59 



204 
206 
208 
210 

T' 1 TJ 

214 
216 
218 
220 

224 
226 
228 
230 
232 
234 
236 
238 
240 
242 
244 
246 
248 
250 



the mass storage tape 



and hit =* END LINE^" 



IF 
IF 
IF 
IF 
IF 



254 

256 

258 

ECTED" 

260 IF 

262 

264 

266 

268 

270 

E" 

272 

274 

276 

278 

280 

282 

284 

286 

288 

290 

294 
296 
298 
300 
302 



READ# l,J+2 ; T ( J ) , D ( J ) , Fl ( ) , D4 ( ) , LI ( J ) , L2 ( J) , L3 ( J) , L4 ( J) 

Y1=Y1+1 

FOR K=l TO 32 

F<J,K:>=F1 (K) 

D3<J,H::)=D4(K) 

NEXT K 

NEXT J 

OFF ERROR 

ASSIGN# 1 TO * 

ENABLE KBD 1 

CLEAR 

L INPUT "Insert 

CLEAR I? CRT IS 2 

ON ERROR GOTO 256 

BEEP 

DISP USING 236 

IMAGE 2/, " 

CAT 

CRT IS 1 

ON ERROR GOTO 244 

LINPUT "Input new -file name (1-6 char):". A* 

Z*=TRIM*(A*) 

ON ERROR GOTO 256 

CREATE Z*,Yl+2,586 

OFF ERROR 

GOTO 276 

OFF ERROR i? CRT IS 1 i? 

IF ERRN=60 THEN BEEP i? 



A* 



-TAPE DIRECTORY- 



CRT ON 

PRINT "*****ERROR 



TAPE IS WRITE 



PROT 



ERRN=60 
ERRN=62 
ERRN=73 
ERRN=73 
ERRN=65 
ERRN=63 



THEN 
THEN 
THEN 
THEN 
THEN 
THEN 



224 

224 

ERASETAPE 

228 



BEEP 
BEEP 



I? PRINT 
I? PRINT 



"*****ERROR - 
"*****ERROR - 



TAPE IS FULL" 
DUPLICATED FILE 



NAM 



IF ERRN=65 THEN 224 

GOTO 242 

CLEAR I? ENABLE KBD 

ASSIGN# 1 TO Z* 

CRT OFF 

PRINT# 1,1 ; P*,H* 

PRINT# 1,2 ; Y1,D1,T1,D2,T2,G 

FOR J=l TO Yl 

FOR K=l TO 32 

Fl (K)=F(J,K) 

D4(K)=D3(J,H::) 

NEXT K 

PRINT* l,J+2 

NEXT J 

ASSIGNtt 1 TO * 

CLEAR 6' ENABLE KBD 1 



T(J) ,D(J) ,F1 () ,D4() ,L1(J) ,L2(J) ,L3(J) ,L4(J) 



60 



303 CAT 

304 LINPUT "Put the program tape back and hit 'END LINE="",A$ 
306 ON ERROR GOTO 308 

308 LINPUT "Purge the original -Fi 1 e (Y/N) ?" , A* 

310 OFF ERROR 

312 IF A*="N" THEN 126 

314 IF A*#"Y" THEN 306 

316 ON ERROR GOTO 326 

318 IF G=l THEN ASSI6N# 1 TO "FILEOl" 

320 IF G=2 THEN ASSIGN# 1 TO "FILE02" 

322 PRINTtt 1,2 ; 0, Dl , Tl , D2, T2, G 

324 ASSIGN# 1 TO * 

326 OFF ERROR 

328 GOTO 126 

330 ! 

332 ! Help. 

334 ENABLE KBD 1 6' CLEAR 

336 DISP USING 338 

338 IMAGE 9X , "*****HELP*****" , 2/ 

340 DISP "The keys operate as -follows:" 

342 DISP USING 344 

344 IMAGE /,"H::i= 'STORE' data -for project 1",/,"K2= 'STORE' data -for p 

roject 2" 

346 DISP USING 348 

348 IMAGE "K:3= ' HELP' " , /, "H::4= 'EXIT' module 'STORE' ",2/ 

350 DISP USING 352 

352 IMAGE "Note: the name inputted -for the" , /, "-f i le to be stored shoul 

d be" 

354 DISP USING 356 

356 IMAGE "different -from those already in",/, "the tape directory. ", 2/ 

358 LINPUT "Hit 'END LINE' to return", A* 

360 GOTO 126 

362 ! 

364 ! Exit. 

366 ENABLE KBD 3Z 

368 CHAIN "CONTRL" 

370 END 



61 



MODULE 'PRINT' 



1 00 

102 

104 

106 

108 

110 

112 

(32) 

114 

116 

lis 

120 

1 fC 

124 

126 

128 

1 30 

132 

134 

136 

138 

140 

142 

144 

146 

148 

150 

152 

154 

156 

n\E' 

158 

160 

162 

164 

166 

168 

170 

172 

174 

176 

178 

130 

182 

184 

186 

188 

190 

192 

194 

196 

198 



This is module 'PRINT". 

It is the print segment 

o-f the data acquisition 

program 'MDAP85'. 
OPTION BASE 1 

DIM P*C30:,H*i:256:,A*C303,Z$C63 
INTEGER LI (2) ,L2(2) , DO, Dl , D2, D3, D4, G, Gl , I, 1 1 , J, Jl , J2, K, Kl , Q, Ql , 0, D 



SHORT F(32) ,F1 (5,32) ,U 
REAL T0,T1,T2,T3,T4 
CLEAR I? DISP " 
WAIT 3000 

! Key assignments. 
ENABLE KBD 32 
G1=0 

1, "PRINT 1 

2, "PRINT 2 

3, "STORED 

4, "HELP 

5, "EXIT 

KEY LABEL 
144 

#****=• PRINT 



MODULE 'PRINT'" 



ON 
ON 
ON 
ON 
ON 



KEY# 

KEY# 

KEY# 

KEY# 

KEY# 
CLEAR 15' 
DISP USING 
IMAGE 3/, " 



GOTO 192 
GOTO 204 
GOTO 152 
GOTO 440 
GOTO 464 



options*****" 



GOTO 146 



! Print stored -file. 

ENABLE KBD 1 

CLEAR 

LINPUT "Insert the tape containing the stored data and hit 'END L 

", A$ 

CLEAR I? CRT IS 2 

ON ERROR GOTO 180 

DISP USING 164 

IMAGE 2/," TAPE DIRECTORY " 

CAT I? CRT IS 1 

ON ERROR GOTO 170 

LINPUT "Input -file name(l-6 char):", A* 

Z$=TRIM*(A*) 

ON ERROR GOTO 180 

ASSIGN# 1 TO Z* 

GOTO 224 

OFF ERROR i? CRT IS 1 

IF ERRN=67 THEN BEEP i? PRINT "*****ERROR - NO SUCH FILE" 

IF ERRN=67 THEN GOTO 430 

GOTO 154 

! Project #1,2. 

Gl = l 

ENABLE KBD 

CLEAR 

ON ERROR GOTO 216 



Hiiiiw^iiiiiiMMMyMyyy 



OTf 






62 



200 ASSIGNtt 1 TO "FILEOl" 

202 GOTO 224 

204 Gl=2 

206 ENABLE KBD O 

208 CLEAR 

210 ON ERROR GOTO 216 

212 ASSIGN# 1 TO "FILE02" 

214 GOTO 224 

216 OFF ERROR i? BEEP 

218 IF Gl = l THEN PRINT "*****ERROR - ASSIGN ''FILEOl'" 

220 IF Gl=2 THEN PRINT "*****ERROR - ASSIGN •-FILE02'" 

222 GOTO 126 

224 OFF ERROR i? ENABLE KBD 

226 CLEAR 9 CRT OFF 

228 READ# 1,1 ; P*,H$ 

;0 READ# 1,2 ; Y, Dl , Tl , D2, T2, G 
CRT DN 
234 IF Y>0 THEN 240 

236 BEEP I? PRINT "*****ERROR - NO DATA" 
238 GOTO 426 

240 DISP USING 242 ; G,P* 

242 IMAGE 5X , " *>lc***PROJECT ",D," *****",/, "Project ID:",/,K,2/ 
244 DISP USING 246 ; Y 
246 IMAGE "# o-F scans: " , DDD 

248 DISP USING 250 ; HMS$ (Tl ), MDY$ (Dl+MDY (" 12/31/1981 ") ) 
250 IMAGE "Starting time and date: " , / , K, lOX, K 
252 DISP USING 254 ; HMS$ (T2) , MDY$ (D2+MDY (" 12/31/ 1981 ") ) 
254 IMAGE "Ending time and date: " , / , K, lOX , K, 2/ 
256 ON ERROR GOTO 224 
258 ENABLE KBD 1 

260 DISP "Enter time interval -for printingthe data:" 
262 LINPUT "mm/dd/yyyy hh:mm:ss (start)", A* 
264 A*=TRIM*<A$) 

266 D3=MDY(A*C1, 103 ) -MDY (" 12/31 / 1981 " ) 
268 T3=HMS(TRIM*(A*C12]) ) 

270 LINPUT "mm/dd/yyyy hh:mm:ss (end)", A* 
272 A$=TRIM*(A*) 

274 D4=MDY(A*C1, 103 ) -MDY (" 12/31 / 1981 " ) 
276 T4=HMS(TRIM*(A*C123) ) 
278 OFF ERROR 
280 0=0 

282 IF D3>D2 THEN 0=1 
284 IF D4<D1 THEN 0=1 
286 IF D3>D4 THEN 0=1 
288 IF 0=0 THEN 298 

290 BEEP I? PRINT "*****ERROR - WRONG INTERVAL" 
292 GOTO 426 
294 ! 

296 ! Print the data. 
298 CRT OFF 
300 PRINT USING 302 
302 IMAGE 3/, " DATA PRINTOUT " 



63 



304 PRINT 
306 IMAGE 
308 PRINT 
310 IMAGE 
312 PRINT 
314 IMAGE 
316 PRINT 
318 IMAGE 
320 PRINT 
322 IMAGE 
324 PRINT " 
326 0=0 
328 FOR J=l 
330 CRT OFF 
332 READ# l,J+2 ; 
334 J1=RMD<J,5)+1 
336 FOR 1=1 TO 32 
338 Fl (Jl, I)=F(I) 
340 NEXT I 
342 IF D0<D3 
344 IF D0>D4 
346 IF D0#D3 
348 IF T0<T3 
350 IF D0#D4 
T0>T4 



354 
356 
358 
360 
362 
364 
366 



USING 306 ; 

"PROJECT #! 

USING 310 ; 

"PROJECT ID: 

USING 314 ; 

"TOTAL # OF 

USING 318 ; HMS* (Tl ), MDY* <D1+MDY (" 12/31/1981 ") ) 

"STARTING TIME AND DATE: " , / , K, lOX , K 

USING 322 ; HMS$ (T2) , MDY* (D2+MDY (" 12/31/1981 "> ) 

"ENDING TIME AND DATE: " , / , K, lOX , K 



",DD 




P* 




",/,K,2/ 




Y 




SCANS: ". 


,DDD 


HMS*(T1) 


, MDY*<D1 



TO Y 



TO,DO,F() ,D(> ,L1 () ,L2() 



IF 
IF 
IF 
IF 
IF 

0=0+1 
PRINT 
IMAGE 
PRINT 
PRINT 
PRINT 
IMAGE 
TA CON" 
368 PRINT 
FOR I 



THEN 
THEN 
THEN 
THEN 
THEN 
THEN 



418 
420 
350 
418 
354 
420 



USING 

4/,7X, 

"TIME: 

"DATE: 

USING 

/, "CH 



DDD. 



****** ",2/ 



358 ; J 
"******SCAN 

",HMS*(TO> 

" , MDY$ (DO+MDY ( " 12/31 / 1981 " ) ) 
366 
CHANNEL CHANNEL RAW",/," # 



NAME 



VALUE 



DA 



370 
372 
374 
376 
378 
380 
382 
384 
386 
388 
390 
392 
394 
396 
398 
400 
402 
404 



1 TO 32 



Q=IP<I/17)+1 
Q1=I-16*Q+15 
K=8*(I-1)+1 
Kl=K+7 
11=0 

IF BIT(L1 (Q) 
BIT(L2(Q) 



IF 

IF 11=0 THEN 

IF 11=1 THEN 

IF 11=2 THEN 

IF 11=3 THEN 

IF 11=3 THEN 

IF J<5 THEN 

U=0 

FOR J2=l TO 5 

IF J2=J1 THEN 406 

U=U+F1 (J2, I) /4 



THEN 
THEN 



Ql) 
01) 
A*=" 

A*="LOW" 
A*="HIG" 
A*="ERR" 
412 
412 



11=11+1 
11=11+2 



— I n 1 nnmrn wMWMnnnnnnann 1 



64 



406 NEXT J2 

408 IF U=0 THEN 412 

410 IF ABS< (F(I)-U)/U) >.05 THEN A*="CHG" 

412 PRINT USING 414 ; I+32*G-32, H$CK, Kl 3 , F ( I ) , D (I.) , A* 
414 IMAGE DD,X,8A,X,MD.DDDe,2X,3Z,X,3A 

416 NEXT I 

413 NEXT J 

420 IF 0=0 THEN BEEP i? PRINT "*****ERROR - NO DATA IN THE GIVEN IN 

TERVAL" 

422 PRINT USING 424 

424 IMAGE " ",5/ 

426 ASSIGNtt 1 TO * 

425 IF G1#0 THEN 126 
430 CLEAR i? ENABLE KBD 1 

432 LINPUT "Put the program tape back and hit =■ END LINE'", A* 

434 GOTO 126 

436 ! 

438 ! Help. 

440 CLEAR i? ENABLE KBD 1 

442 DISP USING 444 

444 IMAGE ?X, "*****HELP*****" , 2/ 

446 DISP "The keys operate as follows:" 

448 DISP USING 450 

450 IMAGE 1/,"K1= 'PRINT' project 1",/,"K2= 'PRINT' project 2" 

452 DISP USING 454 

454 IMAGE "K3= print a 'STORED' -f i le", /, "K4= ' HELP' " , /, "K5= 'EXIT' mod 

ule 'PRINT' ",6/ 

456 LINPUT "Hit 'END LINE' to return", A* 

458 GOTO 126 

460 ! 

462 ! Exit. 

464 CLEAR i? ENABLE KBD 33 

466 CHAIN "CONTRL" 

468 END 



65 



MODULE 'PLOT' 



1 00 

102 

104 

106 

108 

110 

112 

114 

116 

118 

1 20 

122 

124 

126 

128 

130 

132 

134 

136 

138 

140 

142 

144 

146 

148 

150 

152 

154 

156 

158 

INE' 

160 

162 

164 

166 

168 

170 

172 

174 

176 

178 

ISO 

182 

184 

186 

188 

190 

192 

194 

196 

198 

200 



This is module -PLOT'. 

It is the plot segment 

o-f the data acquisition 

program ' MDAF" . 
OPTION BASE 1 

DIM P$C30],H*C256],Z*C63,W*C30],P1*C1],A*C30: 
INTEGER DdOO) , Dl , D2, D3, D4, I , J , K, Kl , G, Gl , 0, L, M, Ml , N, Y 
SHORT F<100,32) ,F1 (32) ,Q 

REAL TdOO) ,T1,T2,T3,T4,X1,X2,X3,X4,Y1,Y2, Y3, Y4,E 
CLEAR 

DISP " MODULE 'PLOT- " 

WAIT 3000 

! Key assignments. 
ENABLE KBD 32 
G 1 =0 I? 0=0 






ON 
ON 
ON 



KEY# 
KEY# 
KEY# 
ON KEY# 4 
ON KEY# 5 



GOTO 
GOTO 
GOTO 
GOTO 610 
GOTO 634 



196 
208 
154 



1,"PL0T 1" 
2, "PLOT 2" 
3, "STORED" 
"HELP " 
"EXIT " 
CLEAR I? KEY LABEL 
DISP USING 14.6 

IMAGE 3/," *****'PLOT=' options*****" 
GOTO 148 

! Plot stored -file. 

ENABLE KBD 1 

CLEAR 

LINPUT "Insert the tape containing the stored data and hit 'END L 

",A$ 

CLEAR I? CRT IS 2 

ON ERROR GOTO 184 

DISP USING 166 

IMAGE 2/," TAPE DIRECTORY " 

CAT li' CRT IS 1 

ON ERROR GOTO 172 

LINPUT "Input file name(l-6 char):", A* 

Z*=TRIM$(A*) 

ON ERROR GOTO 184 

ENABLE KBD 

ASSIGNtt 1 TO 1% 

GOTO 228 

OFF ERROR i? CRT IS 1 

IF ERRN#67 THEN 154 

BEEP I? PRINT "*****ERROR - NO SUCH FILE" 

0=1 I? GOTO 258 

! Project # 1,2. 

Gl = l 

ENABLE KBD 

CLEAR 



■ ■MM»iMMM*fifw»#«»w>finninnniin n iH i 



66 



202 ON ERROR GOTO 220 

204 ASSIGNtt 1 TO "FILEOl" 

206 GOTO 228 

208 Gl=2 

210 ENABLE KBD 

212 CLEAR 

214 ON ERROR GOTO 220 

216 ASSIGN# 1 TO "FILE02" 

218 GOTO 228 

220 OFF ERROR i? BEEP 

222 IF Gl=l THEN PRINT "*****ERROR - ASSIGN ^FILEOl-" 

224 IF Gl=2 THEN PRINT "*****ERROR - ASSIGN ••'FILE02-" 

226 GOTO 128 

228 OFF ERROR 

230 CLEAR i? CRT OFF 

232 READ# 1, 1 ; P$,H* 

234 READ# 1 ,, 2 ; Y, Dl , Tl , D2, T2, G 

236 IF Y>0 THEN 244 

238 BEEP I? PRINT "***!|c*ERROR - NO DATA" 

240 ASSIGNtt 1 TO * 

242 GOTO 128 

244 FOR 1=1 TO Y 

246 READ# 1,1+2 ; T ( I ) , D (I ) , F 1 () 

248 FOR J=l TO 32 

250 F(I, J)=F1 (J) 

252 NEXT J 

254 NEXT I 

256 ASSIGN# 1 TO * 

258 ENABLE KBD 1 

260 IF G1#0 THEN 276 

262 ! 

264 ! Put program tape back. 

266 CLEAR 

268 LINPUT "Put the program tape back and hit 'END LINE'", A* 

270 IF 0=1 THEN 128 

272 ' 

274 ! Get infor. -for plot. 

276 CLEAR 

278 DISP USING 280 ; G,P* 

280 IMAGE 5X, "*****PROJECT ",D," *****",/, "Pro ject ID:",/,K,2/ 

282 DISP USING 284 ; Y 

284 IMAGE "# o-f data points: " , DDD 

286 DISP USING 288 ; MDY* (Dl+MDY (" 12/31/ 1981 ")), HMS$ (Tl ) 

288 IMAGE "Starting date and time: " , /, K, 1 X, K 

290 DISP USING 292 ; MDY* (D2+MDY (" 12/31/ 1981 ">), HMS$ (T2) 

292 IMAGE "Ending date and time: " , /, K, 1 X, K, 2/ 

294 ON ERROR GOTO 276 

296 DISP "Enter time interval for plottingthe data:" 

298 LINPUT "mm/dd/yyyy hh:mm:ss (start) ",A$ 

300 A*=TRIM*(A*) 

302 D3=MDY(A$C1, 103) -MDY(" 12/31/ 1981") 

304 T3=HMS(TRIM*(A*C12:) ) 



67 

306 L INPUT "mm/dd/yyyy hh:mm:ss (end)",A$ 

30Q A*=TRIM$(A*) 

310 D4=MDY(A$C1, lOD ) -MDY (" 12/31/1981 " ) 

312 T4=HMS(TRIM$(A*C12:> ) 

314 OFF ERROR 

316 0=0 

318 IF D3>D2 THEN 0=1 

320 IF D4<D1 THEN 0=1 

322 IF D3:>D4 THEN 0=1 

324 IF D3#D4 THEN 328 

326 IF T3>=T4 THEN 0=1 

328 IF 0=0 THEN 334 

330 BEEP I? PRINT "*****ERROR - WRONG INTERVAL" 

332 GOTO 276 

334 CLEAR i? ON ERROR GOTO 334 

336 DISP "YMIN,YMAX for plot"; 

338 INPUT Y3,Y4 

340 L INPUT "Plot on CRT or PLOTTER (C/P> ?", PI* 

342 IF P1*#"P" THEN 348 

344 LINPUT "Input LABEL -for Y aKis:",W* 

346 LINPUT "Set plotter and hit -END LINE'", A* 

348 OFF ERROR 

350 ! 

352 ! Draw axes and boundar. 

354 Xl=D3+T3/86400-365 

356 X2=D4+T4/86400-365 

358 Y1=Y3 I? Y2=Y4 

360 IF P1*#"P" THEN 420 

362 PLOTTER IS 705 

364 LOCATE 14, 100*RATI0-14, 12, 82 

366 SCALE X1,X2,Y1,Y2 

368 FXD 3,3 i? CSIZE 2,. 5,0 

370 LAXES 

372 MOVE XI, Y2 i? DRAW X2,Y2 

374 DRAW X2,Y1 

376 CSIZE 3, .5,0 

378 DEG I? LDIR 90 

380 SETGU I? MOVE 2,40 

382 LABEL W$ 

384 LDIR 

386 MOVE 40, 1 

388 LABEL "TIME (DAYS SINCE 12/31/1982)" 

390 MOVE 14,95 t? CSIZE 4,. 5,0 

392 LABEL USING 394 ; P* 

394 IMAGE K 

396 MOVE 14,91 i? CSIZE 3,. 5,0 

398 LABEL USING 400 ; G+3 

400 IMAGE "INSTALLATION: ",D 

402 MOVE 14,89 

404 A*C1,8D=HMS$(T3) i? A*C9, 133 = " " i? A*C 14, 23:=MDY* (D3+MDY (" 12/31 / 

I 



1981")) 

406 LABEL USING 408 ; A* CI, 23] 



I 



68 






408 


IMAGE "STARTING TIME AND DATE FOR PL0T:",5X,K 




410 


MOVE 14,87 




412 


A*C1,8D=HMS*(T4) i? A*C9, 133 = " " i? A*C 14, 233=MDY* (D4+MDY ( " 12/3 


1/ 


1981 


. ") ) 




414 


LABEL USING 416 ; A*C 1,233 




416 


IMAGE "ENDING TIME AND DATE FOR PL0T:",7X,K 




418 


GOTO 442 




420 


PLOTTER IS 1 




422 


GCLEAR 




424 


LOCATE 35, 100*RATI0-5, 12,95 




426 


SCALE X1,X2,Y1,Y2 




428 


FXD 3,2 




430 


LAXES (X2-Xl)/-24, (Y2-Y1 ) /24, XI , Yl , 10, 10 




432 


SETGU 




434 


MOVE 35,0 




436 


LABEL "DAYS SINCE 01/01/1982" 




438 


1 




440 


! Get in-for. -for curve. 




442 


1=0 




444 


1 = 1 + 1 




446 


SETUU 1? MOVE X1,Y1 




448 


IF I>6 THEN 590 




450 


CLEAR 




452 


LINPUT "Plot data(Y/N)?",A* 




454 


IF A*="N" THEN 590 




456 


IF A$#"Y" THEN 450 




458 


ON ERROR GOTO 460 




460 


LINPUT "Input channel # to be plotted: ", A* 




462 


J=VAL(A*) 




464 


OFF ERROR 




466 


IF J<32*(G-1)+1 THEN 450 




468 


IF J>32*G THEN 450 




470 


IF G=2 THEN J=J-32 




472 


N=100 1? A*="Y" 




474 


IF P1*#"P" THEN 498 




476 


ON ERROR GOTO 478 




478 


LINPUT "Input # o-f points to bypass -for identi-f ication: " , A$ 




480 


N=VAL(A*> 




482 


OFF ERROR 




484 


IF N<0 THEN 450 




485 


IF J<21 THEN 489 




486 


IF J>30 THEN 489 




487 


LINPUT "Input Modulas; Ek10--6, E=1 -for Microstrain output". A* 




488 


E=VAL(A*) 




489 


LINPUT "Connect data points (Y/N) ?", A* 




490 


IF A*="Y" THEN 498 




491 


IF A*="N" THEN 498 




492 


GOTO 486 




494 


! 




496 


! Plot curve. 




498 


M=0 15 Ml=0 




500 


IF P1*#"P" THEN GRAPHICS i? E= 1000000 





69 



502 
504 
506 
508 
510 
511 
512 
513 
514 
515 
516 
518 
520 

524 

526 

528 

530 

532 

534 

536 

538 

540 

542 

544 

546 

-1 

548 

550 

552 

554 

556 

558 

560 

562 

564 

566 

568 

570 

572 

574 

576 

578 

580 

582 

584 

586 

588 

590 

592 

594 

596 



FOR L=l TO Y-1 

X3=D (L) +T (L) /86400-365 

X4=D (L+1 ) H-T (L+1 ) /86400-365 

IF X3<X1 THEN 554 

IF X4>X2 THEN 560 

Y3=F(L,J) 1? Y4=F(L+1,J) 

IF J<2i THEN 515 

IF J>30 THEN 515 

Y3=Y3*E* 1000000 i*' Y4=Y4*E* 1000000 

M=M+1 

IF M>N THEN M=0 

IF M#0 THEN 550 

SETUU I? MOVE X3,Y3 i? SETGU 

ON I GOSUB 526,530,534,538,542,546 

Ml = l I? GOTO 550 

RPLOT .3,1,-1 I? RPLOT -.3,1,-1 i? RPLOT 0,0,2 

RETURN 

RPLOT .3,-1,-1 6' RPLOT -.3,-1,-1 i? RPLOT 0,0,2 

RETURN 

RPLOT -.5,. 5,-1 1? RPLOT -.5, -.5,-1 i? RPLOT 0,0,2 

RETURN 

RPLOT .5,-5,-1 I? RPLOT .5, -.5,-1 i? RPLOT 0,0,2 

RETURN 

RPLOT -.5,0,1 I? RPLOT .5,0,-1 5' RPLOT 0,-.5,-2 i? RPLOT 0,.5,-l 

RETURN 

RPLOT -.5, -.5,1 I? RPLOT .5,. 5,-1 i? RPLOT .5, -.5, -2 i? RPLOT -.5,-5. 

RETURN 

SETUU I? IF A*#"Y" THEN 554 

MOVE X3,Y3 I? DRAW X4,Y4 

NEXT L 
I 

! Write legend. 

IF P1$#"P" THEN 444 

IF M1=0 THEN 444 

K=8*(J-1)+1 

Kl=K+7 

Q=.5 

IF 1=1 THEN Q=0 

IF 1=2 THEN Q=l 

SETGU I? MOVE 100*RATI0-26, 80-1 *2+Q 

ON I GOSUB 526,530,534,538,542,546 

MOVE 100* RAT I 0-24, 80-1*2 

LABEL USING 582 ^H^Ch^Ki: 

IMAGE "=",K 

GOTO 444 

! Plot more? 

IF P1*#"C" THEN 594 

GRAPHICS I? COPY 

PEN 

CLEAR 



70 



598 LINPUT "Plot more -From this -f i le (Y/N) ?" , A$ 

600 IF A$="Y" THEN 276 

602 IF A*="N" THEN 128 

604 GOTO 596 

606 ! 

608 ! Help. 

610 CLEAR I? ENABLE KBD 1 

612 DISP USING 614 

614 IMAGE 9X, "*****HELP*****",2/ 

616 DISP "The keys operate as -follows:" 

618 DISP USING 620 

620 IMAGE 1/,"K1= ^-PLOT- o-f project 1",/,"K2= •-PL0T=' o-f project 2" 

622 DISP USING 624 

624 IMAGE "K3= plot o-f a 'STORED" -f i le" , /, "K4= ' HELP' " , /, "K5= 'EXIT' m 

odule 'PLOT' ",6/ 

626 LINPUT "Hit 'END LINE' to return", A* 

628 GOTO 128 

630 ! 

632 ! Exit. 

634 CLEAR i? ENABLE KBD 33 

636 CHAIN "DATA" 

638 END 



71 



MODULE 'NPLOT' 



1 00 
120 
140 
160 
ISO 
200 

240 

260 

280 

300 

320 

340 

360 

3S0 

400 

420 

440 

460 

480 

500 

520 

540 

560 

580 

600 

620 

640 

660 

680 

700 

720 

740 

760 

780 

IHE 

800 

820 

840 

860 

880 

900 

920 

940 

960 

980 

1000 

1 020 

1040 

1060 

1080 

1 1 00 



This is program 'NPLOT". 
It plots the files crea- 
ted by program "ACQUIR". 

OPTION BASE 1 

DIM P*C30D,H$C256D,Z*C6D,W*C303,A*C30D 

INTEGER D(IOO) , Dl , D2, D3, D4, I , J , K, Kl , G, Gl , 0, L, M, Ml (6) ,N,C 

SHORT F(100,32) ,F1 (32) ,Q 

REAL T (100) , Tl , T2, T3, T4, XI , X2, X3, X4, Yl , Y2, Y3, Y4, E 

CLEAR 

DISP " PROGRAM 'PLOT^"' 

WAIT 3000 
I 

! Initial ize 

C=0 

FOR 1=1 TO 6 

Ml (I)=0 

NEXT I 

! Key assignments. 
ENABLE KBD 32 
G1=0 

1 



1 



variables. 






ON 
ON 
ON 
ON 
ON 



KEY# 
KEY# 
KEY# 

k:ey# 

KEY# 



. "PRO J 1 
2, "PRO J 2 
3, "STORED 
4, "HELP 
5, "EXIT 



GOTO 
GOTO 
GOTO 
GOTO 
GOTO 



1 220 

1340 

740 

5240 

5480 



CLEAR I? KEY LABEL 
DISP USING 660 
IMAGE 3/, " *****^ 
GOTO 680 



NPLOT' options*****" 



stored 
KBD 1 



■file. 



"Insert the tape containing the stored data and hit "END L 



! Plot 

ENABLE 

CLEAR 

L INPUT 

",A* 

CLEAR I? CRT IS 2 

ON ERROR GOTO 1060 

DISP USING 860 

IMAGE 2/," ■ 

CAT 

CRT IS 1 

ON ERROR GOTO 

L INPUT "Input 

Z*=TRIM*(A*) 

ON ERROR GOTO 

ENABLE KBD 

ASSIGN# 1 TO 

GOTO 1540 

OFF ERROR i? CRT IS 1 

IF ERRN#67 THEN 760 

BEEP IP PRINT "*****ERROR - NO SUCH FILE" 



940 
■file 

1060 

Z* 



-TAPE DIRECTORY- 



name(l-6 char) 



A* 



imiiiniMinnni 



72 



1120 ENABLE KBD 1 

1140 LINPUT "Put the program tape back and hit 'END LINE'", A* 

1160 GOTO 480 

1180 ! 

1200 ! Project #1,2. 

1220 Gl=l 

1240 ENABLE KBD 

1260 CLEAR 

1280 ON ERROR GOTO 1460 

1300 ASSIGN* 1 TO "FILEOl" 

1320 GOTO 1540 

1340 Gl=2 

1360 ENABLE KBD 

1380 CLEAR 

1400 ON ERROR GOTO 1460 

1420 ASSIGN# 1 TO "FILE02" 

1440 GOTO 1540 

1460 OFF ERROR i? BEEP 

1480 IF Gl = l THEN PRINT "**.***ERROR - ASSIGN 'FILEOl'" 

1500 IF Gl=2 THEN PRINT "*****ERROR - ASSIGN 'FILE02'" 

1520 GOTO 480 

1540 OFF ERROR 

1560 CLEAR i? CRT OFF 

1580 READ# 1, 1 ; P*,H* 

1600 READ# 1,2 ; Y, Dl , Tl , D2, T2, G 

1620 IF Y>0 THEN 1700 

1640 BEEP I? PRINT "*****ERROR - NO DATA" 

1660 ASSIGN* 1 TO * 

1680 GOTO 480 

1700 FOR 1=1 TO Y 

1720 READ# 1,1+2 ; T (I ) , D ( I ) , Fl ( ) 

1740 FOR J=l TO 32 

1760 F(I, J)=F1 (J) 

1780 NEXT J 

1800 NEXT I 

1820 ASSIGN# 1 TO * 

1840 ENABLE KBD 1 

1860 IF G1#0 THEN 2000 

1880 i 

1900 ! Put program tape back. 

1920 CLEAR 

1940 LINPUT "Put the program tape back and hit 'END LINE'", A* 

1960 ! 

1980 ! Get in-for. -for plot. 

2000 CLEAR 

2020 DISP USING 2040 ; G,P$ 

2040 IMAGE 5X, "*****PROJECT ",D," *****",/, "Pro ject ID:",/,K,2/ 

2060 DISP USING 2080 ; Y 

2080 IMAGE "# o-f data points: ",DDD 

2100 DISP USING 2120 ; HMS* (Tl ), MDY* (Dl+MDY (" 12/31/ 1981 ") ) 

2120 IMAGE "Starting time and date: " , /, K, lOX, K 

2140 DISP USING 2160 : HMS* (T2) , MDY* (D2+MDY (" 12/31/ 1981 ") ) 



73 



2160 IMAGE "Ending time and date: " , /, K, lOX, K, 2/ 

2180 IF C=0 THEN 2240 

2200 L INPUT "Hit 'END LINE="",A* 

2220 GOTO 3460 

2240 ON ERROR GOTO 2000 

2260 DISP "Enter time interval -for plottingthe data; 

2280 LINPUT "mm/dd/yyyy hh:mm:ss (start) ",A$ 

2300 A*=TRIM*<A*) 

2320 D3=MDY(A*C1, lO: ) -MDY (" 12/31/1981 " ) 

2340 T3=HMS(TRIM$(A*C12:> ) 

2360 LINPUT "mm/dd/yyyy hhummrss (end)", A* 

2380 A*=TRIM*(A$) 

2400 D4=MDY(A$C1, 103 ) -MDY (" 12/31 / 1981 " ) 

2420 T4=HMS ( TR I M$ ( A* C 1 2 3 ) > 

2440 OFF ERROR 

2460 0=0 

2480 IF D3>D2 THEN 0=1 

2500 IF D4<D1 THEN 0=1 

2520 IF D3>D4 THEN 0=1 

2540 IF D3#D4 THEN 2580 

2560 IF T3=T4 THEN 0=1 

2580 IF 0=0 THEN 2640 

2600 BEEP I? PRINT "*****ERROR - WRONG INTERVAL" 

2620 GOTO 2000 

2640 CLEAR i? ON ERROR GOTO 2640 

2660 DISP "YMIN,YMAX for plot"; 

2680 INPUT Y3,Y4 

2700 LINPUT "Input LABEL -for Y aKi5:",W$ 

2720 LINPUT "Set plotter and hit 'END LINE='",A$ 

2740 OFF ERROR 

2760 ! 

2780 ! Draw axes and boundar. 

2800 Xl=D3+T3/86400-365 

2820 X2=D4+T4/a6400-365 

2840 Y1=Y3 li' Y2=Y4 

2860 PLOTTER IS 705 

2880 LOCATE 14, 100*RATI0-14, 12, 82 

2900 SCALE X1,X2,Y1,Y2 

2920 FXD 3,3 i? CSIZE 2,. 5,0 

2930 YAXIS X2 

2940 LAXES 

2960 MOVE Xl,Y2ii' DRAW X2,Y2 

2980 DRAW X2,Y1 

3000 CSIZE 3, .5,0 

3020 DEG I? LDIR 90 

3040 SETGU i? MOVE 2,40 

3060 LABEL W$ 

3080 LDIR 

3100 MOVE 40, 1 

3120 LABEL "TIME (DAYS SINCE 12/31/1982)" 

3140 MOVE 14,95 i? CSIZE 4,. 5,0 

3160 LABEL USING 3180 : Pi 



74 



3180 IMAGE K 

3200 MOVE 14,91 i? CSIZE 3,. 5,0 

3220 LABEL USING 3240 ; G+3 

3240 IMAGE "INSTALLATION: ",D 

3260 MOVE 14,89 

3280 A*C1,S:=HMS*(T3> i? A*C9, 13D = " " i? A*C 14, 231=MDY$ (D3+MDY (" 12/31 

/1981") ) 

3300 LABEL USING 3320 ; A$C1,23 3 

3320 IMAGE "STARTING TIME AND DATE FOR PL0T:",5X,K 

3340 MOVE 14,87 

3360 A*C1,8:=HMS*(T4) i? A*C9, 133 = " " i? A*C 14, 23]=MDY* (D4+MDY (" 12/31 

/1981") ) 

3380 LABEL USING 3400 ; A$C1,23: 

3400 IMAGE "ENDING TIME AND DATE FOR PL0T:",7X,K 

3420 ! 

3440 ! Get in-for. -for curve. 

3460 PEN 1 

3480 1=0 

3500 SETUU I? MOVE XI, Yl 

3520 CLEAR 

3540 LINPUT "Plot data (Y/N) ?" , A* 

3560 IF A*="N" THEN 5000 

3600 ON ERROR GOTO 3620 

3620 LINPUT "Input channel # to be plotted:", A* 

3640 J=VAL(A*) 

3660 OFF ERROR 

3680 IF J<32*(G-1)+1 THEN 3520 

3700 IF J>32*G THEN 3520 

3720 IF G=2 THEN J=J-32 

3740 ON ERROR GOTO 3760 

3760 LINPUT "Input # o-f points to bypass -for identi -f ication: " , A* 

3780 N=VAL(A*) 

3800 OFF ERROR 

3820 IF N<0 THEN 3520 

3840 IF N>=Y THEN 3980 

3860 ON ERROR GOTO 3880 

3880 LINPUT " Identi -f i cati on # (1-6)?",A$ 

3900 I=VAL(A$) 

3920 IF Kl THEN 3880 

3940 IF I>6 THEN 3880 

3960 OFF ERROR 

3961 IF J<21 THEN 3980 

3962 IF J>30 THEN 3980 

3964 LINPUT "INPUT MODULUS; Ek10--6, E=1 FOR MICROSTRAIN OUTPUT", A* 

3966 E=VAL(A$) 

3980 LINPUT "Draw lines between points (Y/N) ?", A$ 

4000 IF A*="Y" THEN 4100 

4020 IF A*="N" THEN 4100 

4040 GOTO 3980 

4060 ! 

4080 ! Plot curve. 

4100 M=0 



75 



4120 FOR L=l TO Y-1 
4140 X3=D(L)+T(L)/a6400-365 
4160 X4=D<L+1>+T(L+1) /a6400-.365 
4180 IF X3<X1 THEN 4620 

4200 IF X4>X2 THEN 4680 

4201 Y3=F(L,J) I? Y4=F(L+1,J) 

4202 IF J>30 THEN 4240 

4203 IF J<21 THEN 4240 
4205 Y3=Y3*E* 1000000 
4207 Y4=Y4*E* 1000000 
4220 GOTO 4240 

4225 IF L-Kl THEN 4232 

4230 Y3=(F(L-1, J)+1*F(L, J)+F(L+1, J) )!icl000000/3 

4231 GOTO 4234 

4232 Y3=(F(L, J)*2+F<L+1, J) )* 1000000/3 

4234 IF L+2>Y THEN 4238 

4235 Y4= (F (L, J) +1*F (L+1 , J ) +F <L+2, J ) )* 1000000/3 

4236 GOTO 4240 

4238 Y4=(F(L, J)+2*F(L+1, J) ) * 1000000/3 

4240 M=M+1 

4260 IF M>N THEN M=0 

4280 IF M#0 THEN 4580 

4300 SETUU I? MOVE X3,Y3 i? SETGU 

4320 ON I GOSUB 4340,4380,4420,4460,4500,4540 

4330 GOTO 4580 

4340 RPLOT .3,1,-1 i? RPLOT -.3,1,-1 i? RPLOT 0,0,2 

4360 RETURN 

4380 RPLOT .3,-1,-1 i? RPLOT -.3,-1,-1 li' RPLOT 0,0,2 

4400 RETURN 

4420 RPLOT -.5,-5,-1 i? RPLOT -.5, -.5,-1 i? RPLOT 0,0,2 

4440 RETURN 

4460 RPLOT .5,. 5,-1 i? RPLOT .5, -.5,-1 df RPLOT 0,0,2 

4480 RETURN 

4500 RPLOT -.5,0,1 i? RPLOT .5,0,-1 i? RPLOT 0,-.5,-2 6' RPLOT 0,.5,-l 

4520 RETURN 

4540 RPLOT -.5, -.5,1 i? RPLOT .5,. 5,-1 i? RPLOT .5, -.5, -2 i? RPLOT -.5,. 5 

,-1 

4560 RETURN 

4580 SETUU i? IF A*#"Y" THEN 4620 

4600 MOVE X3,Y3 i? DRAW X4,Y4 

4620 NEXT L 

4640 ! 

4660 ! Write legend. 

4680 IF 1=0 THEN 3500 

4700 IF M1(I)=1 THEN 3480 

4720 Ml (I)=l 

4740 K=8*(J-1)+1 

4760 Kl=K+7 

4780 Q=.5 

4800 IF 1=1 THEN Q=0 

4820 IF 1=2 THEN 0=1 

4840 SETGU i? MOVE 100*RATI0-26, 80-1 *2+Q 






■ wwMtHn aatMiM M iii nBM ■■ ■■ ■■■■■■ ■■ ■ ■ ■■■ ■ifwnnnt i nnnoonna onaaaaaaaaaaaiiiiiiiiiMa ti^ 



76 

4860 ON I GQSUB 4340,4380,4420,4460,4500,4540 

4880 MOVE 100*RATI0-24, 80-1*2 

4900 LABEL USING 4920 ; H*[:k:,K1D 

4920 IMAGE "=",K 

4940 GOTO 3480 

4960 ! 

4980 ! Plot more? 

5000 CLEAR 

5020 PEN 

5040 L INPUT "Continue this pi ot (Y/N) ?" , A* 

5060 IF A*="N" THEN 5110 

5080 IF A*#"Y" THEN 5040 

5100 C=l I? GOTO 480 

5110 C=0 

5111 FOR 1=1 TO 6 

5112 Ml (I>=0 

5113 NEXT I 

5120 LINPUT "Plot more -from this -Fi 1 e (Y/N) ?" , A* 

5140 IF A$="Y" THEN 2000 

5160 IF A*="N" THEN 480 

5180 GOTO 5120 

5200 i 

5220 ! Help. 

5240 CLEAR i? ENABLE KBD 1 

5260 DI3P USING 5280 

5280 IMAGE 9X, "*****HELP*****" , 2/ 

5300 DISP "The keys operate as -follows:" 

5320 DISP USING 5340 

5340 IMAGE 1/,"K1= plot o-f 'PROJECT 1='",/,"K2= plot o-f 'PROJECT 2'" 

5360 DISP USING 5380 

5380 IMAGE "K3= plot o-f a 'STORED' -f i le" , /, "K4= ' HELP' " , / , "K5= 'EXIT^ 

program ' PLOT' " , 6/ 

5400 LINPUT "Hit 'END LINE' to return", A* 

5420 GOTO 480 

5440 ! 

5460 ! Exit. 

5480 CLEAR i? ENABLE KBD 33 

5500 STOP 

5520 END 



77 



MODULE 'MODATA' 

000 ! MODATA - VERSION 1 7/12/83 

010 CLEAR 

015 OPTION BASE 1 

020 INTEGER Tl , F2, D7, P2, E, A7, MS, PO, 09, FS, A, B, I , J, L, LO, L5, LS, Y9, RO, Rl , R2, R3, KO, H 

030 DIM F$C18:,0*C18D,E*C1003,G*C100D,L*C96:,N*C14],N0«C14D,E0*C28],N9*C14],W0* 

22 D 

040 DIM I$C4100],S*C100D,K9*i:480],K7*i:96D,09*C6:,K$C100],Bl*C100],P*C32:,PliE:23 

P9$C40:,P7*C2: 

050 DIM R0*C32D,R1*:96:,R2*C23,L9*C2D,C*:4:,A*C18], ZSC 1 3 , Z 1*[ 1 D , Z2*C1 3 

055 DIM D4(32) ,F1 (32) 

060 ON ERROR GOTO 1070 S' A=BTD ( " 1 " ) S' GOTO 1080 

070 DI3P "No I/O rom" (5 BEEP S STOP 

080 S=0 I? ON ERROR GOTO 1100 

090 FOR 1=3 TO 10 i±' STATUS 1,0 ; Ali- IF A=2 THEN S=I i? 1 = 10 

100 NEXT I 

110 IF S=0 THEN BEEP li' DISP "No modem" i? STOP 

120 T1=0 I? RESET S 

130 K9*=" CONNECT AUTO-ANS ANSWER ORIG STEST " 

140 K:9*=K9*S<" terminal DIAL REDIAL HANGUP TERMINAL 

150 K9*=K9*&" ESCAPE BREAK PRNTrOFF direct trans-fer -frame connect' 

1 60 K9$=K9*S< " TRANSFER SHOWF I LE CAT 

170 K9*=K9$2." terminal ENDXFER UPLOAD DOWNLOAD FRAME 

180 K9«=K9*?<" BITS: 7 ODD ERR: OFF terminal ECHO; OFF FLIP: OFF CR 

190 K9$=K9*?." DIRECTORY DELETE RENAME LIST STATUS 

200 K9S=K9«S-;"terminal LOAD ADD STORE " 

210 09*="0FF0N " i? P9*=" NONE ODD EVEN ALWAYS 1 ALWAYS 0" 

220 Y9,09,F2,D7,X0,P2,E,C4,L,L0,L5,K0,F8, A7,M8,H=0 6' K*, P7*, P*, L*, E*, F*, 0*=" " 

230 PI =2 li' D8=4000 ! D8=LEN ( I*) -100 

240 L9*=CHR*(13) 6' EO*="Line >200 characters ignored" •»' N9*="Name not -found" 

250 WO$="Waiting -for connection" 

260 ON ERROR GOTO 1270 •? LOADBIN "IPBIN" 

270 OFF ERROR 6' CONTROL S,9 ; 225 

280 HALT S i? CONTROL S,5 ; OH' CONTROL S, 14 ; 19,17,0ii' CONTROL S,ll ; 192 

285 STATUS S,9 ; Ai? CONTROL S,9 ; BINIOR ( A, 128) 

290 IF MS=0 THEN K9=l i? GOSUB 5300 

300 CS=CHR* ( 1 53 ) S<CHR* ( 8 ) S<CHR* ( 1 46 ) &CHR* (12) 

310 CONVERT KBD PAIRS ; C« 

320 ON KBD GOSUB 1770 

330 lOBUFFER I* i? lOBUFFER S* 

340 D=l 

350 SET TIMEOUT S; 60000 

360 ON TIMEOUT S GOTO 1580 

370 ON ERROR GOSUB 1620 

380 IF MS OR Tl THEN 1400 

390 DISP "Modcom ready -for use" i? BEEP 20,30 

400 GOSUB 1720 i? ON INTR S GOTO 1590 i5 M8=0 6' ENABLE INTR S;4 li' CONTROL S,5 ; 1 



410 TRANSFER S TO I* INTR 

420 IF A7=0 THEN 1450 ELSE A7=0 i? A=(TIME+2) MOD 86400-2 

430 STATUS I*, 1 ; Bi? IF B#0 THEN 1450 



mmmmmLtMMmam 



it»iMwwMwiwtii#MMM>nnnnnnMii 



78 



1440 B=TIME I? IF B-2<A OR B-IOOOOA THEN 1430 

1450 DISP "Connection established" i? K9=2 & GOSUB 5300 

1460 STATUS I$,0 ; A1,A2 

1470 GOSUB 5980 i? IF MB THEN 1590 

1480 IF A2<A1 OR A2<D THEN 1460 

1490 ON ERROR GOSUB 1620 

1500 B1$=I*CD,A2D i? CDISP Bl* i? P7*=B1*CMAX ( 1 , LEN (Bl*) -1 ) , LEN (Bl*) ] i? D=A2+1 

1510 IF NOT P2 THEN 1540 

1520 ON ERROR GOSUB 1700 

1530 IF Pl>2 THEN OUTPUT PI USING "tt,K 

1540 ON ERROR GOSUB 1620 

1550 STATUS I*, 1 ; A2 

1560 IF A2<DS THEN 1460 

1570 IF D7 THEN GOSUB 3800 i? GOTO 1460 

1580 DISP "Time out" S' OFF TIMEOUT S 6' 



Bl* ELSE CPRINT Bl* 



ELSE GOSUB 1750 6' 
OFF KBD 6' OFF EOT 



GOTO 1460 
S S' RESET 



S 6' GOTO 1130 



1590 

1 600 

1610 

1 620 

1630 

1640 

1650 

90 

1 660 

1670 



HALT S I? OFF KBD i? Tl = l i? L=0 i? IF D7 THEN GOSUB 3120 

CONTROL S, 1 ; 06' IF MS THEN 1280 ELSE CONTROL S,5 ; 

DISP "Modem carrier lost" i? BEEP 300,200 i? GOSUB 5860 i? GOTO 1280 

1*="" li- GOSUB 3950 

IF ERRN>=80 AND ERRN092 THEN DISP "Illegal entry" i? GOTO 1690 

IF ERRN>=60 AND ERRNOO THEN DISP "File problem" l? GOTO 1690 

IF ERRN>=30 AND ERRN<60 THEN DISP "Program input bu-f-fer over-flow" 



I? GOTO 16 



DISP "System error "; ERRN; "at line";ERRL S' GOTO 1690 
ERRN0131 THEN DISP "Mass storage/printer error"; ERRN; 



IF ERRN<30 THEN 

IF ERRN >= 123 AND 
;ERRL I? GOTO 1690 

1630 DISP "Input bu-f-fer over-run ! Data lost!" i? OFF EOT S i? GOSUB 3988 
1690 BEEP li' ON ERROR GOSUB 1620 i±' RETURN 
1700 DISP "Bad select code" © DISP "Printer o-f-f" i? P2=N0T P2 S' K9*C151,15 



'at 



;d="off 



1710 
1720 
1 730 
1740 
TURN 
1750 
1 760 
1770 
1 780 
1790 
1 800 
1810 
1820 
1830 
1 840 
1 850 
1860 
1870 
1880 
1890 
1 9<50 



IF K9=2 THEN GOSUB 5300 6' GOTO 1690 ELSE GOTO 1690 

STATUS S,3 ; Ai? IF A MOD 2=0 THEN 1720 

OFF TIMER# 3 i? STATUS S,9 ; AS' CONTROL S,9 ; A-i-4 

C4=l I? S*="" I? IF LEN(L*)=6 OR L5=0 THEN RETURN ELSE L=l i? L0=1 6' L5=0 i? RE 

STATUS I$,l ; A2ii' I*=I*CD,A2: 
D=l S' GOTO 3960 
K$=KBD* 

JO=FIND(K*) I? IF J0=0 THEN K=LEN(K*) i? GOTO 2480 
N=NUM(K*[JO, J03) 

IF N=154 THEN K«=K*C 1 , JO-1 D&L9*S<K*[: JO-^-1 D 6- GOTO 1780 
N<=135 THEN ON K9 GOTO 5330,1970,2070,2140,2330 
N=142 THEN K*C JO, J03=CHR* ( 19) 6' GOTO 1780 ! PAUSE (XOFF) 
K*CJO, J0D=CHR*(17) i? GOTO 1780 ! CONT (XON) 
CLPOS+1 li' CCURSOR CCPOS+32 i? GOTO 2460 
CLPOS-1 I? CCURSOR CCPOS-32 i? GOTO 2460 
5300 li' GOTO 2470 
e GOTO 2470 ! Paper Advance 
RESET S li' OFF KBD li' CLEAR i? STOP ! Reset 



IF 
IF 
IF 
IF 
IF 
IF 
IF 
IF 
IF 
IF 



N=143 
N=158 
N=159 
N=150 
N=138 
N=139 
N=165 
N=161 



THEN 
THEN 
THEN 
THEN 
THEN 
THEN 
THEN 
THEN 



CLINE 

CLINE 

GOSUB 

PRINT 

BEEP li' 

CCURSOR 

CCURSOR 



Roll Up 
Rol 1 Down 



CLP0S*32 li' 
CCPOS-32 6' 



GOTO 2470 
GOTO 2440 



Home 

Up arrow 



79 



1910 
1 920 
1930 
1940 
1950 
1 960 
1970 
1980 
1990 
2000 
2010 
2020 
2030 
2040 
2050 
2060 
2070 
2080 
2090 
2 1 00 
2110 
2 1 20 
2130 
2140 
2 1 50 
2160 
310 



IF N=162 THEN CCURSOR CCPOS+32 i? GOTO 2440 

IF N=156 THEN 

IF N=157 THEN 

IF N=173 THEN 

IF N=141 THEN L0=1 I? GOTO 2440 

GOTO 2410 

! so-ft keys p2 



CCURSOR CCPOS-1 I? GOTO 2440 
CCURSOR CCPOS+1 li' GOTO 2440 
OFF TIMERtt 3 i? L=0 i? L0=0 6' 

RUN 



Down arrow 
! Le-ft arrow 
! Right arrow 
GOTO 2440 ! SCRATCH 



IF N=133 THEN 
IF N=129 THEN 
IF N=131 THEN 
IF N=128 THEN 
IF N=132 THEN 
IF N=130 THEN 
IF N=134 THEN 
GOTO 2410 
! so-ft keys p3 



REQUEST S; 1 I? GOTO 2470 ! Send 
K9=3 li- GOSUB 5300 S' GOTO 2470 
K9=l I? GOSUB 5300 i? GOTO 2470 
K9=5 e GOSUB 5300 i? GOTO 2470 
K;*CJ0, J0]=CHR*(27) i? GOTO 1780 
K9=4 I? GOSUB 5300 6- GOTO 2470 
GOSUB 4230 6- GOTO 2470 



BREAK 
TRANSFER 
CONNECT 
DIRECT 

! < escape: 



IF N=12S THEN 
IF N=133 THEN 
IF N=129 THEN 
IF N=130 THEN 
IF N=131 THEN 
IF N=132 THEN 
GOTO 2410 
! so-ft keys p4 
IF N=128 THEN 
IF N=129 THEN 
ECHO 



K9=2 ti' GOSUB 5300 
GOSUB 2650 i? GOTO 
GOSUB 3120 li' GOTO 
3190 ! Upload 
GOSUB 3750 i? GOTO 
4050 ! show-file 



I? GOTO 
2470 ! 
2470 ! 

2470 ! 



! FRAME 
PRINTER 



terminal 



2470 

CAT 

End trans'fer 

Download 



2170 IF N=130 THEN 

TO 2310 ! FLIP 

2180 IF N#131 THEN 
IF LEN(L9«)=1 
L9*=L9*Cl,n I? K9*[:382,Z 
GOSUB 5300 li- GOTO 2310 ! 



K9=2 1? GOSUB 5300 i? GOTO 2470 ! terminal 

E=NOT E I? K9*C367,369D=09*CE*3-i-l,E*3+3] li' GOSUB 5300 i? GOTO 2 

F8=N0T F8 li' K9*C376, 378D=09*I:FS*3+1 , F8*3+3: li' GOSUB 5300 li' 



GO 



2220 

THEN L9*=L9«.t:CHR$(10> 
84] = " 
CR - CR/LF 



I? K:9*C3a2,384: = "/LF" i±' GOTO 2210 



IF N#132 THEN 2240 ELSE HALT S i? STATUS S,4 ; Ai? A=BINEOR ( A, 1 ) i? CONTROL S, 



4+5) 
HALT 



GOSUB 5300 li' 
I? STATUS S,4 



GOTO 2290 ! BITS 
; Aii' B=A\8 MOD 8 



li- B=BINI0R(B+1 



2190 
2200 
2210 

4 ; A 

2230 K9*C327,327D=VAL*(A MOD 

2240 IF N#133 THEN 2270 ELSE 

, 1 ) MOD 9 

2250 A=BINIOR(BINAND(A, 199) ,B*a) 6' CONTROL S,4 ; Ai? B=(B+1)\2 

2260 K9$C330,3373=P9*CB*8+l,B*8+8: li' GOSUB 5300 i? GOTO 2290 ! PARITY 

IF N#134 THEN 2410 ELSE HALT S t? STATUS S,9 ; A© B= (BINAND ( A, 8) +4) MOD 11 

CONTROL S,9 ; BINEOR (A, 8) li' K9* C 343, 345 3=09* CB, 6+23 6' GOSUB 5300 ! ERRCHK 

IF C4=0 THEN 2470 

HALT S li- TRANSFER S TO I* INTR 6' STATUS S*,0 ; A,Bii' IF AOB THEN TRANSFER 

S INTR 

IF K9=4 THEN 0*="" li' GOTO 2470 ELSE 2470 

! softkeys p5 

5300 15 GOTO 2470 ! TERMINAL 

GOTO 2430 ! LOAD 

GOTO 2430 ! REPLACE 

GOSUB 5170 I? GOTO 2430 ! LIST 

GOTO 2470 ! STATUS 



2270 
2280 
2290 
2300 
$ TO 
2310 
2320 
2330 
2340 
2350 
2360 
2370 



IF N=128 

IF N=129 

IF N=131 

IF N=134 

IF N=135 



THEN K9=2 6' GOSUB 
THEN GOSUB 4450 6' 
THEN GOSUB 5120 i? 
THEN GOSUB 5290 li' 
THEN GOSUB 2710 li' 



80 



2380 
2390 
2400 

24 1 
2420 
2430 
2440 
2450 
2460 
2470 
2480 
2490 
2500 

2520 
25 1 
2520 
2530 
2540 
2550 
2560 
2570 
2580 
2590 
2600 
2610 
2620 
2630 
2640 
2650 
27 1 
N PR I 
2720 
2730 
2740 
2750 
73 

2760 
2770 

2730 
2790 
2800 
2810 
2820 
2830 
2840 
2850 
2860 
2870 
2880 
2390 
2900 



IF N=132 THEN GOSUB 5250 li' GOTO 2430 

IF N=133 THEN GOSUB 5290 i? GOSUB 4510 6' GOTO 2430 ! RENAME 

IF N=130 THEN GOSUB 5290 l? GOSUB 4590 & GOTO 2430 ! ADD 

BEEP 125,100 I? BEEP 60,150 i? GOTO 2470 

BEEP 150,75 & GOSUB 5290 & GOTO 2470 

IF 09=0 THEN 2290 ELSE ASSIGN* 2 TO * i? 09=0 & GOTO 2290 

IF (CCP0S\32+1) MOD 64=CLP0S THEN CCURSOR CCPOS+512 

IF CCP0S\32=(CLP0S+16) MOD 64 THEN CCURSOR CCPOS-512 

K7$="" I? CD ISP K:7« 

ON ERROR GOTO 2480 6' K*=K*C 1 , JO-1 3&K«C JO+1 D i? GOTO 1780 

GOSUB 2490 i? IF K*#"" THEN 1780 ELSE ON KBD GOSUB 1770 i? RETURN 

ON ERROR GOSUB 1620 i? IF Fa=0 THEN 2530 

FOR X=l TO K I? A=NUM(K*CXj,X]) 6' IF (A>64 AND A<91 OR A>96 AND A<123)=0 THEN 

K*CX, X:=CHR*(BINE0R(A,32) ) 

NEXT X 

IF NOT K THEN 2640 

OUTPUT S* USING "#,K" ; K*C1,K] 

RESUME S 

STATUS S*,3 ; A3ii' STATUS S*, 1 ; Al 

IF NOT A3 AND Al THEN TRANSFER S* TO S INTR 

IF NOT E THEN 2640 

K7$=K*:i,K3 ij- CD ISP K7* 

ON ERROR GOSUB 1700 

IF P2#0 AND Pl>2 THEN OUTPUT PI USING "#,K" ; K« 

IF P2#0 AND PI =2 THEN CPRINT K* 

ON ERROR GOSUB 1620 

K*=K* C K+ 1 , LEN ( K* ) ] C RETURN 

ON ERROR GOTO 3055 li- CLEAR i? CAT t? GOSUB 5300 •? RETURN 

PRINT "Modcom status:" i? PRINT i? PRINT "Name "?<0*;ii' IF 0*="" THE 

NT "NONE" ELSE PRINT 

PRINT "Phone number "iiF%;5f IF P*="" THEN PRINT "NONE" ELSE PRINT 

PRINT "Logon sequence. . "&L*; i? IF L$="" THEN PRINT "NONE" ELSE PRINT 

PRINT "Echo ";!? IF E THEN PRINT "ON" ELSE PRINT "OFF" 

PRINT "Flip "&K9*C376,378] i? PRINT "Data bits "?.K9*[327, 32 

J =330 I? IF K9*CJ,J: = " " THEN J =332 

PRINT "Parity "?<K9$C J , 3373 li' PRINT "Error check "?<K9$:343, 345] 

PRINT "EOL "; 

FOR 1=1 TO LEN(L9$) 

IF L94CI, I3=CHR*(10) THEN PRINT "/LF";i? GOTO 2830 

IF L9$CI, i:=CHR*(13) THEN PRINT "CR";ii' GOTO 2830 

PRINT NUM(L9*CI, 13) ; 

NEXT I I? PRINT I? PRINT li' PRINT i? PRINT i? PRINT i? RETURN 

GOSUB 3040 li' ON ERROR GOTO 3010 6' DISP "File name"; 6' INPUT F* 

IF F*="" THEN 3030 

ON ERROR GOTO 2990 

ASSIGNtt 1 TO F* I? DISP "File open" i? X0=1 i? 1$="" i? GOSUB 3950 i? RETURN 

GOSUB 3040 I? ON ERROR GOTO 3020 

D7=0 I? DISP "Create a -File :Y/N";i? INPUT Bl* 

IF B1S="" THEN BEEP 150,75 I? GOTO 3030 



81 



2910 B1*=UPC*(B1*) I? F7=Bl*i:i, 1D#"Y" li' IF B1*C1,1D#"N" AND F7 THEN BEEP i? GOTO 2 

880 

2920 IF F7 THEN 2840 

2930 ON ERROR GOTO 3050 

2940 DISP "File size in 256 byte records" ; i? INPUT Bl*ii' IF Bl*="" THEN 3030 

2950 I1=VAL(B1*) i? ON ERROR GOTO 2970 

2960 CREATE F*,I1 i? DISP "File created" i? GOTO 2860 

2970 GOSUB 3060 & DISP "File not created" 

2930 BEEP I? 1*="" li- GOSUB 3950 i? GOTO 2930 

2990 GOSUB 3060 li' BEEP 6- WAIT 1200 ^ 

3000 IF D4 THEN 2890 ELSE 2840 | 

3010 F*="" ^ 

3020 DISP "Bad input" i? BEEP li' WAIT 1200 i? GOTO 2840 | 

3030 F*="" li' BEEP 150,75 

3040 GOSUB 5290 li' 1*="" i? GOSUB 3950 & RETURN 

3050 DISP "Bad input" li' BEEP li' GOTO 2930 

3055 GOSUB 5300 i? BEEP 

3060 IF ERRN=63 THEN DISP "Duplicate -file name" li' RETURN 

3070 IF ERRN=61 OR ERRN=65 OR ERRN=128 OR ERRN=124 THEN DISP "Storage medium -ful 

1 " li' RETURN 

3080 IF ERRN=62 THEN DISP "Cartridge out" 6' RETURN 

3090 IF ERRN=130 THEN DISP "Disc out" I? RETURN 

3095 IF ERRN=a9 THEN DISP "Bad size" i? RETURN 

3100 DISP "Bad -file name" i? RETURN 

3110 ! End trans-fer 

3120 IF NOT D7 THEN DISP "No trans-fer!" li' BEEP li' GOSUB 5300 li' RETURN 

3130 IF F2 THEN 3680 

3140 GOSUB 3890 li' ON ERROR GOTO 3690 

3150 D7=0 li' PRINT# 1 ; " " i? GOTO 3680 

3160 GOSUB 5300 

3170 ON KBD GOSUB 1770 •? RETURN 

3130 ! Upload 

3190 IF C4=0 THEN GOSUB 3720 l? GOTO 3160 

3200 IF D7 THEN GOSUB 3730 i? GOTO 3160 ELSE D4=0 l? GOSUB 2840 

3210 IF F*="" THEN D7=0 li' GOTO 3170 

3220 IF D7 OR NOT XO THEN DISP "No trans-Fer - File not opened" li' BEEP li' GOTO 316 



3230 D7=l li' Bl*="" li' F2=l li' F3=0 ! -file x-fer on 

3240 ON ERROR GOTO 3300 

3250 GOSUB 5290 

3260 DISP "Does your host prompt :Y/N"; 

3270 INPUT A*ii' A$=UPC*(A$) i? P9=0 

3280 IF A*="" THEN D7=0 i? F2=0 i? BEEP 150,75 li' CLEAR li' GOTO 3160 

3290 IF A*C1,1D="Y" OR A*Cl,i:="N" THEN 3310 

3300 BEEP li' GOTO 3250 

3310 IF A*:i,n="Y" THEN P9=l 

3320 IF P9=l THEN 3360 ELSE Y9=0 

3325 ON ERROR GOTO 3660 

3330 DISP "Enter delay (millisecs) between sending lines" li' INPUT A* 

3340 IF A*="" THEN 3280 

3350 Y9='v'AL(A*) li' GOTO 3410 

3360 WAIT 500 



82 



3370 ! SAVE PROMPT CHARACTER 

3380 X=LEN<P7*) i? IF X=0 THEN DISP "No prompt char" i? GOTO 3260 ELSE Z*=P7*CX,X3 

3390 X = X-1 li' IF X=0 THEN Zl*="" ELSE Z1*=P7*:X,X] 

3400 ! get a line 

410 DISP "Upload in progress" i? ON KBD GOSUB 1770 

420 IF NOT D7 THEN 3680 

3425 GOTO 7000 

3430 OFF ERROR li- GOTO 3490 

3435 CD ISP 1$ li- 1*="" i? GOSUB 3950 

440 IF F3=0 THEN 3490 

3450 F3=0 I? RETURN 

3490 OUTPUT S$ USING "#,K" ; Bl$ 

>500 OUTPUT S$ USING "#,K" ; E« 

5510 IF E THEN CDISP Bl* (? CDISP E* 

.520 TRANSFER S$ TO S INTR 

3530 STATUS S«,3 ; A3ii' IF A3 THEN 3530 

3540 IF P9#l THEN WAIT Y9 

3550 RETURN 

3560 X=LEN(I$) i? IF X=0 THEN 3560 ELSE Z2*=I*CX,X: 

3570 IF Z2*=Z* THEN 3590 

3580 IF Z2«<>Z1* THEN 3560 

590 WAIT 500 li- GOTO 3430 

3600 IF ERRN=56 THEN DISP EO* i? BEEP ti' GOTO 3490 

3610 F2=0 I? IF ERRN=71 OR 72 THEN 3680 

5620 D7=0 

5630 IF ERRN=66 THEN DISP "File not opened ! "; 

3640 DISP "No -file trans-Fer" S' BEEP i? X0=0 6- RETURN 

■■660 DISP "Bad input ... Please reenter" i? BEEP i? WAIT 1200 

3670 GOSUB 5290 U GOTO 3325 

680 D7=0 li' X0=0 "? ASSIGNtt 1 TO * i? DISP "File transfer complete" i±' GOSUB 5300 

690 IF NOT F2 THEN 3710 

3700 ON ERROR GOTO 3710 i? F2=0 S' F3=l i5 BEEP 150,75 6' RETURN 

3710 BEEP 150,75 i? GOSUB 5300 I? RETURN 

3720 GOSUB 5290 li' BEEP i? DISP "No connection!" i? RETURN 

3730 DISP "Trans-fer already in progress" & BEEP 9 RETURN 

3740 ! Download 

3750 IF C4=0 THEN 3720 

3800 ON ERROR GOSUB 3980 

3835 WAIT 30 i? HALT S M' STATUS S,9 ; Ai? CONTROL S,9 ; BINI0R(A,1) 

3839 TRANSFER S TO I* INTR 

3840 STATUS S*,3 ; A3i? IF A3 THEN 3840 
3350 OUTPUT S* USING "#,K" ; CHR*(17) 
3860 RESUME S 

3870 TRANSFER S* TO S INTR 

3830 RETURN 

;890 ON ERROR GOSUB 3980 

!;900 STATUS I*,0 ; Al,A2ii' P=POS ( 1$: Al , A2: , CHR* ( 10) ) i? IF P=0 THEN 3930 

5910 ENTER 1$ ; Bl*ii' IF Bl*="" THEN Bi*=" " 

3920 PRINT# 1 ; Bl$ S' GOTO 3900 

3930 IF DOA2+1 THEN B1*=I$CD,A2] l? CDISP Bl$ 

3940 I*=I*CA1,A2] 



83 



3950 D=LEN(I*)+1 
3960 C0^4TR0L I$,0 
3970 RETURN 



Hi' Al = l li' A2=0 



li- 1$="" li- GOSUB 3950 i? F2=0 i»' 



3980 DISP li' IF ERRN=72 THEN DISP "File too small 

GOTO 3680 
3933 IF ERRN=114 THEN DISP "Input bu-ffer over-flow, data lost" ELSE DISP "Error" 
ERRN;"on line";ERRL 



3995 

3938 

3990 

4000 

4010 

4020 

4030 

4040 

4050 

4060 

E ON 

4070 

4080 

4090 

4 1 <:)0 

4110 

4120 

4 1 30 

4140 

4 1 50 

4 1 60 

4170 

4 1 80 

4 1 90 

4200 

4210 

4220 

4230 

OTO 

4240 

4250 

4260 

4270 

4230 

4290 

4300 

4310 

4320 

4330 

4340 

4350 

4360 

4370 

4380 

4390 



GOSUB 
STATUS 
! EOT 
STATUS 
IF I#0 
STATUS 
IF U0=1 
! show 



3120 li- ON ERROR GOSUB 3980 li' 1*="" li' GOSUB 
S,9 ; Aii' CONTROL S,9 ; A+46' RETURN 



I$,2 ; I 

THEN ON EOT S GOSUB 4000 li' RETURN 
S, 11 ; UOii' G$=I$ li' 1*="" i? CONTROL 
OR U0=65 THEN RETURN ELSE E*=G* li' 
■File 



I$,0 ; 
RETURN 



5950 



1,0 



IF D7 THEN GOSUB 3730 li' GOTO 3160 ELSE D7,F2=1 

1$="" li' GOSUB 3950 li' D4=0 i? GOSUB 2840 li' IF F*=' 

KBD GOSUB 1770 

ON ERROR GOTO 4140 

IF NOT D7 THEN 4210 

READ# 1 ; Bl$ 

IF Bl*="" THEN 4210 

DISP Bl* I? IF NOT P2 THEN 4080 ELSE ON ERROR GOSUB 1700 

IF Pl>2 THEN OUTPUT PI ;B1* ELSE PRINT Bl* 

ON ERROR GOTO 4140 i? GOTO 4080 

IF ERRN=71 OR ERRN=72 THEN 4210 

IF ERRN=66 THEN DISP "File not opened" li' GOTO 4210 

IF ERRN=64 THEN DISP "Empty -file" (? GOTO 4210 

IF ERRN=62 OR ERRN=130 THEN GOSUB 3080 li' GOTO 4210 

IF ERRN=56 THEN DISP EO* i±> BEEP li' GOTO 4090 

ERRN>=60 AND ERRNOO THEN DISP "File in error 



THEN D7=0 I? GOTO 3160 ELS 



li' GOTO 4210 



li' F2,D7=0 I? RETURN 



IF 

IF ERRN>=123 AND ERRN<=131 THEN DISP "File/printer" 
BEEP 150,75 li' B1$,F$="" i? DISP "*** End o-f -file ***" 
! printer 

P2=N0T P2 li' K9*C151, 153:=09$CP2*3+l,P2*3+33 li' IF NOT P2 THEN GOSUB 5300 li' G 
4360 



I? A=I1\100 



GOSUB 5290 i? DISP "Old select code is ";P1 i? 
ON ERROR GOTO 4370 i? INPUT A*ii' IF A*="" THEN 
I1=VAL(A$) li' IF IKl THEN 4340 
IF IK 99 THEN B=2 li' A=I1 ELSE B=l 

A>10 THEN 4340 

(A=l OR A=2) AND B=2 THEN 4350 

A<3 THEN 4340 

RIO (A, 0) =255 THEN 4340 

A=S THEN 4340 
4350 
li' DISP "Invalid select code" 



DISP "New select code"; 
GOSUB 5290 6' GOTO 4360 



IF 

IF 

IF 

IF 

IF 

GOTO 

BEEP 



li- WAIT 1200 li' GOTO 4240 



•P1=I1 



GOSUB 5290 li' 

RETURN 

DISP "Bad input" i? 

ON ERROR GOTO 4410 

READ* 2,R ; N*ii' IF 



BEEP li' WAIT 1200 i? GOTO 4240 
6' R=l I? ASSIGN* 2 TO "PHONE*' 
N«=NO* THEN A=l i? RETURN 



I? 09=1 



■■■■II1II1-I1-M11.—-W-.. — ■■■■■■ ■rww.....~-ll»inti«lip n 



84 



4400 IF N$#CHR*(255) THEN R=R+1 li' GOTO 4390 ELSE A=0 i? RETURN 

4410 IF ERRN=72 OR ERRN=71 THEN A=0 i? RETURN 

4420 IF ERRN=67 THEN DISP "Phone directory not -found" i? A=0 i? RETURN 

4430 A=0 li' GOTO 3055 

4440 READ# 2 ; P*, L$, PO, B, L9*, FB, EG' GOSUB 5200 i? 0*=N* li' DISP "Loaded" i? RETURN 

4450 ! LOAD 

4460 GOSUB 5290 li' ON ERROR GOTO 4460 6' DISP "Name";© INPUT NO*ii' IF N0*="" THEN 4 

990 

4470 GOSUB 4330 i? IF A=0 THEN DISP N9* i? WAIT 1200 6' GOTO 4460 

4480 GOSUB 4440 li' L=0 ti' RETURN 

4490 ! RENAME 

4500 WAIT 1200 li' GOSUB 5290 

4510 ON ERROR GOTO 4500 li' DISP "Name to change" ;ii' INPUT NO*ii' IF N0*="" THEN 4990 

4520 GOSUB 4380 i? IF A=0 THEN DISP N9* i? GOTO 4500 ELSE B=R 

4530 ON ERROR GOTO 4530 li' DISP "New name";ii' INPUT NO*ii' IF N0*="" THEN 4990 

4540 GOSUB 4380 li- IF A#0 THEN DISP "Name already exists" li' GOTO 4500 

4550 READ# 2,B ; R0$, R0$, Rl*, RO, Rl , R2*, R2, R3ii' PRINT# 2,B ; NO*, R0$, Rl*, RO, Rl , R2* 

,R2,R3 

4560 DISP "Name changed" i? RETURN 

4570 ! ADD 

4580 WAIT 1200 li' GOSUB 5290 

4590 ON ERROR GOTO 4590 i? DISP "New name"; 

4600 INPUT N0*ii' IF N0*="" THEN 4990 

4610 ON ERROR GOTO 5000 li' N*=NO*' i? ASSIGN* 2 TO "PHONEtt" i? A,R=0 i? 09=1 

4620 R=R+1 li' READ* 2,R ; Bl«ii' IF B1*=N* THEN DISP "Name already exists" i? GOTO 4 

580 

4630 IF Bl^Cl, n=CHR*(12a) AND A=0 THEN A=R i? GOTO 4620 

4640 IF B1*C1, 1D#CHR*(255) THEN 4620 

4650 IF A=0 THEN A=R 

4660 R=A 

4670 CLEAR 

4630 DISP "Current phones" i? IF P*="" THEN DISP "NONE" ELSE DISP P* 

4690 ON ERROR GOTO 4915 (? DISP "New phone" ;ii' INPUT RO*ii' IF R0*="" THEN RO*=P* 

4700 DISP "Current logon:" i? IF L*="" THEN DISP "NONE" ELSE DISP L$ 

4710 DISP "New logon <N -for none)";ii' LINPUT Rl*ii' IF Rl*="" THEN R1*=L$ 

4720 IF R1*="N" OR Rl*="n" THEN Rl*="" 

4730 HALT S S- STATUS 3,4 ; POi? STATUS 3,9 ; B 

4740 K7*="0FFii'0Ni?" li' DISP "Current echo:";ii' IF E THEN DISP "ON" ELSE DISP "OFF" 

4750 DISP "New echo";i? R0=FNI (E) S' IF R0=-1 THEN 4750 

4760 DISP "Current ■flip:";ii' IF FS THEN DISP "ON" ELSE DISP "OFF" 

4770 DISP "New ^lip";!? R1=FNI (F3> i? IF Rl=-1 THEN 4770 

4780 K7$="7ii'8ii'" i? A=BINAND (PO, 3) -2 li' DISP "Current data bi ts: " ; VAL* (A+7) 

4790 DISP "New bits";ii' R2=FNI (A) li' IF R2=-l THEN 4790 ELSE PO=BINAND <P0, 252) +R2+ 

4800 K7$="N0NEii'0DDii'EVENii'ALWAYS Hi'ALWAYS Oi?" 6' DISP "Current parity: ";ii' A=P0\8 MO 

D 8 

4310 A=<A+1)\2 I? DISP K9*C332-A\3*2, 337] 

4820 DISP "New parity";© R2=FNI (A) © IF R2=-l THEN 4820 

4830 A=R2*2-1 i? IF A=-l THEN A=0 

4840 PO=BINAND(PO, 199>+A*8 

4850 DISP "Current error check: ";i5' B=BINAND (B, S) \S li' IF B=l THEN DISP "ON" ELSE 



85 



DISP "OFF" 

4360 K7$="0FFii'0Nii'" 

4S70 DISP "New error check";ii' A=FNI (B) i? IF A=-l THEN 4870 ELSE B=A 

4380 DISP "Current EOL:";ii' IF LEN(L9*)=2 THEN DISP "CR/LF" i? R3=l ELSE DISP "CR" 

I? R3=0 
4390 K7$="CRi?CR/LFii'" i? DISP "New EOL";ii' A=FNI (R3) i? IF A=-l THEN 4890 
4900 IF A=l THEN R2*=CHR* (13) S.CHR* ( 10) ELSE R2*=CHR*(13) 

4910 PRINT# 2,R ; N$, R0$, Rl*, PO, B*a, R2*, Rl , RO i? DISP "Saved" i? GOSUB 5300 i? RETU 
RN 

4915 BEEP I? DISP "Phone number too long" i? WAIT 1200 li' GOTO 4690 
4920 DEF FNI (X) 

4930 Bl$="" I? INPUT Bl$ii' B1*=UPC* (Bl*) li' IF Bl$="" THEN FNI = X i? GOTO 4930 
4940 11 = 1 I? 1 , 10=0 

4950 IF I0=LEN(K7*) THEN FNI=-1 i? GOTO 4980 

4960 I0=P0S(K7*:il,LEN(K7$) :, "ii'")+Il-l i? IF 10=0 THEN FNI=-1 i? GOTO 4980 
4970 IF K7*CI1, I0-13=B1$ THEN FNI = I i? GOTO 49S0 ELSE 1 = 1 + 1 i? 11 = 10+1 li' GOTO 4950 

4930 FN END 

4990 BEEP 150,75 i? GOSUB 5290 S' RETURN 

5000 IF ERRN#67 AND ERRN#72 AND ERRN#71 THEN GOTO 3055 

5005 IF ERRN=71 THEN PRINT# 2,R ; CHR*(255) i±' R=R-1 i? GOTO 4620 

5010 IF ERRN=72 THEN 5050 ELSE DISP "Phone directory doesn't exist." 

5020 DISP "Do you want to create it(Y/N)";ii' INPUT Bl*ii' IF Bl$="" THEN BEEP 150,7 

5 li' GOTO 5290 

5025 B=P0S("YN",UPC*<B1*C1, 13) ) i? IF B=0 THEN 5010 

5030 IF B=2 THEN 5290 ELSE CREATE "PHONE#" , 20, 164 i? ASSIGN# 2 TO "PHONE#" 

5040 FOR B=l TO 20 i? PRINT# 2,B ; CHR*(255) i? NEXT B i? A,R=0 i? 09=1 li' GOTO 4620 

5050 IF A#0 THEN 4660 ELSE DISP "Directory is -full, expanding" i? DISP "Please wa 

it" 

5060 A=R+19 li' CREATE CHR* (254) , A, 164 i? ASSIGN# 3 TO CHR*(254) i? RENAME "PHONE#" 

TO CHR*(255) 

5070 FOR B=l TO R-1 li' READ# 2,B ; NO*, Bl*, K7$, PO, I , Pl$, J , 09 

5080 PRINT# 3,B ; N0$, Bl*, K7*, PO, I , Pl«, J , 09 i? NEXT B li' FOR B=R TO A li' PRINTtt 3,B 

; CHR$(255) 
5090 NEXT B li' ASSIGN# 2 TO * li' ASSIGN# 3 TO * i? PURGE CHR*(255) 
5100 RENAME CHR$(254) TO "PHONE#" i? ASSIGN* 2 TO "PHONE#" li' 09=1 i? A=R li' GOTO 46 



5110 ! STORE 

5120 GOSUB 5290 li' ON ERROR GOTO 5130 

5130 DISP "Name to store" ;ii' INPUT NO$ii' IF N0*="" THEN 4990 

5140 GOSUB 4380 i? IF A=0 THEN DISP N9$ li' WAIT 1200 i? GOTO 5120 

5150 GOTO 4670 

5160 ! LIST 

5170 ON ERROR GOTO 5193 li' ASSIGNtt 2 TO "PHONE#" i? R=0 i? 09=1 i? DISP "Names:" 

5180 R=R+1 li- READ# 2,R ; Bl*ii' IF B1*=CHR* (255) THEN 5197 

5190 IF Bl*=CHR$(12a) THEN 5180 ELSE DISP Bl* i? GOTO 5190 

5193 IF ERRN#72 AND ERRN#71 THEN 3055 

5197 DISP "End o+ directory" i? RETURN 

5200 HALT S li' CONTROL S,4 ; BINAND (PO, 63) li' K9* [327, 3273 =VAL* (PO MOD 4+5) 

5210 A=(P0\8 MOD 8+1 )\2 U K9*C330, 337D=P9*C A*8+l , A*8+8: i? STATUS S,9 ; Aii' A=BINA 

ND(A,247) 

5220 CONTROL S,9 ; BINIOR ( A, B) li' B=B\a li' K9*:343, 345D=09*CB*3+1 , B*3+3: 



wnnnnnnnnflin 



86 



5230 IF LEN(L9*)=2 THEN K9*C3a2, 384:=" /LF" ELSE K9*C382, 384:=" 

5240 K9*C376,37a:=09*CFa*-3+l,Fa*3+3: li' K9$:367,.369:=09*CE*3+1 , E*3+3: i? RETURN 

5250 ! DELETE 

5260 ON ERROR GOTO 5260 i? GOSUB 5290 i? DISP "Name to delete";i? INPUT NO$i±' IF N0$ 

="" THEN 4990 

5270 GOSUB 4380 i? IF A=0 THEN DISP N9* i? WAIT 1200 i? GOTO 5260 

5280 PRINTtt 2,R ; CHR*(128) i? DISP "Deleted" li- RETURN 

5290 CLEAR 

5300 J=CCP0S\32-CLP0S i? IF J<0 THEN J=J+64 

5310 B=CCPOS (i- J=J-12 li' IF J >0 THEN CLINE CLPOS+J 

5320 CCURSOR CLP0S*32+32*13 6' K7«=K9*CK9*96-95, K9*96: i? CWRITE K,7$ li' CCURSOR B i? 

RETURN 

5330 ON N-127 GOTO 5380,5340,5950,5810,5560,5670,5540,5720 

5340 ! DIAL 

5350 GOSUB 5960 li' IF H THEN 2470 

5360 OFF TIMER# 3 i? S*=PS ip GOSUB 5930 i? IF P*="" THEN P*=S* i? GOTO 2420 ELSE PI 
*=P*C1, i: 

5370 IF Pl*="ii'" OR P1*>="0" AND Pl*< = "9" THEN L5=0 i±' L$,0*="" i? GOTO 5400 

5330 N0*=P*C1,MIN(14,LEN(P$) ) : i? GOSUB 4330 li' IF A#l THEN DISP N9$ i? P*=S* li' WAX 
T 1200 li' GOTO 5350 

5390 GOSUB 4440 li' L5=l 

5400 IF P$#"" THEN GOSUB 5410 i? GOTO 5530 ELSE DISP "No phone number" i? BEEP li' W 
AIT 1200 li' GOSUB 5290 i? GOTO 2470 

5410 Bl^t="Dialing " li' CWRITE Bl* i? K:0=0 i? K*=" ! " li' ON KBD GOSUB 5500 

5420 CONTROL 3,2 ; 6ii' WAIT 2000 i? H=l 

5430 FOR 1 = 1 TO LEN(P*) li' IF KO THEN RETURN 

5440 P1*=P*CI, i: 

5450 IF Pl*="ii"' THEN CWRITE PI* li' WAIT 2000 i? GOTO 5490 

5460 K=NUM(Pl$)-43 li' IF K<0 OR K>9 THEN CWRITE Pl$ i±' GOTO 5490 

5470 CWRITE PI* i? IF K=0 THEN K=10 

5430 FOR J = l TO K i? ASSERT S;5 <$ ON TIMER# 3,51 GOTO 5482 

5431 GOTO 5431 

5432 ASSERT S;6 i? ON TIMERtt 3,25 GOTO 5484 

5433 GOTO 5483 

5434 OFF TIMERtt 3 li' NEXT J i? WAIT 700 

5490 NEXT I li- DISP li' ON KBD GOSUB 5520 li' RETURN 

5500 K*=KBD* li' IF K*=CHR*(131) OR K*=CHR* ( 139) THEN K0=1 i? K*=K*?.<K* li' RETURN 

5510 ON KBD GOSUB 5500 li' RETURN 

5520 K*=K*?-:KBD* li' RETURN 

5530 IF KO THEN 2470 ELSE 5550 

5540 GOSUB 5960 li' IF H THEN 2470 ELSE H=l 

5550 CONTROL S,2 ; 7ii' ON TIMERtt 3,30000 GOSUB 5890 i? DISP WO* li' A7=l li' GOTO 2470 

5560 GOSUB 5960 i? IF H THEN 2470 ELSE OFF TIMERtt 3 li' H=l 

5570 DISP "Waiting -for ring" li' DISP "Hit HANGUP to terminate Auto-Ans" 

5530 K*=" ! " li' K0=0 li' ON KBD GOSUB 5690 

5590 STATUS 3,3 ; Aii' IF KO THEN 2470 

5600 IF NOT BIT (A, 3) THEN 5590 

5610 WAIT 500 li' STATUS S,3 ; A 

5620 IF NOT BIT(A,3) THEN DISP "Invalid ring!" i? WAIT 200 li' GOTO 5570 

5630 ON TIMERtt 3, 17000 GOTO 5660 li' GOSUB 5710 

5640 STATUS 3,3 ; A 



87 



IF AOl THEN 
OFF TIMERtt 3 
GOSUB 5960 I? 



5640 ELSE OFF TIMER* 3 i? BEEP 100, 
li' GOSUB 5900 i? GOTO 5570 
IF H THEN 2470 ELSE H=l 



I? BEEP 50,75 li' GOTO 2470 



li' GOSUB 5710 
K*=CHR*(139) 



K$=KBD$ li' IF K*=CHR*(131) OR 

ON KBD GOSUB 5690 li' RETURN 

HALT 3 li' CONTROL S,2 ; Hi' CONTROL S,2 

GOSUB 5960 li' IF H THEN 2470 ELSE H=l 

DISP "Sel-ftest started" 



li' DISP WO* li' GOTO 2470 
THEN K*=K$S<K* li' K0=1 



5ii' RETURN 



Aii' IF A=l THEN 576 



DISP "Modem 
STATUS S,9 I 
INTR 
'0 STATUS 



•failed sel-ftest" 
Aii' CONTROL S,9 



li' GOTO 5820 
A+4ii' Bl*,S*="Modem sel-ftest" 



S$, 



Aii' 



I*=" 
WAIT 



' li' TRANSFER 
1000 li' HALT 



IF A THEN 5770 

S TO 1$ INTR ; COUNT LEN(B1*) 

S li' IF B1*=I$ THEN DISP "Passed 



"Sel-ftest error" li' DISP "Sent:";Bl* li' 



sel-ftest' 
DISP "Received: 



li' 



li' 



HALT S 
; Oii' GOSUB 5860 li' 
500 li' CONTROL S,2 



5650 

5660 

5670 

5680 ON TIMERtt 3,17000 GOSUB 5890 

5690 

5700 

5710 

5720 

5730 

5740 OFF TIMERtt 3 li' CONTROL S,2 ; 3ii' WAIT 2000 li' STATUS S,3 

(I) 

5750 

5760 

S 
57 

5780 
5790 
S20 

5800 DISP 
TO 5320 
5310 GOSUB 5290 

IF C4=l THEN 5840 

IF H=0 THEN DISP "Modem o-f-f" li' GOTO 2470 

OFF TIMERtt 3 i? M8=l li- ON EOT S GOTO 5850 

OFF EOT S li' ENABLE INTR S;0 i? CONTROL S,5 

DISP "Hanging up" li' CONTROL S,2 ; 6ii' WAIT 

WAIT 1700 li' DISP "Modem o-f-f" li' RETURN 

K9=2 li' GOSUB 5300 li' GOTO 2470 

OFF TIMERtt 3 i? STATUS S,3 ; Aii' IF A MOD 2=1 THEN RETURN 

DISP "Time-out. No connection made." li' GOSUB 5860 li- RETURN 

B1*=P$ li' GOSUB 5930 li' IF P*="" THEN P*=B1$ 

GOTO 2470 

ON ERROR GOTO 5940 

DISP "Phone number /name" ; i? INPUT P*ii' RETURN 

GOSUB 5960 li' IF H THEN 2470 ELSE OFF TIMERtt 

IF H THEN DISP "Modem busy" li' BEEP li' RETURN 

GOSUB 5290 i? RETURN 

! LOGON 

IF L>LEN(L$) OR L<=0 OR L0=0 THEN RETURN 
6000 STATUS S$,0 ; RO.RHi' IF ROttRl + 1 THEN RETURN 
6010 IF A2>=D THEN RETURN 

6020 ON POS ( " ( PWE " , UPC$ ( L* C L , L 3 ) ) + 1 GOTO 6030 , 6050 , 6090 , 6 1 20 , 6 1 80 ,6135 
6030 DISP "Invalid char in logon: ";L$CL,LD li' L=0 i? L0=0 li' RETURN 
^040 ! " ■: " 

6050 LS=L-1+P0S(L$CL,LEN(L*) 3, ") ") li' IF L8=L-1 THEN L8=LEN(L$) 
6060 K$=K$.?.-L*[L-^-l,L8-l] li' IF ' L*CL8, L8] = " ) " THEN K$=K*?.L9* 
6070 ON ERROR GOSUB 1620 li' K=LEN(K*) li' GOSUB 2530 i? IF LOO THEN L=L8-(-l 

ELSE RETURN 
6030 ' "P" 

6090 IF LOO THEN DISP "Logon paused. -<RUN> to proceed" li' L=L+1 li' L0=0 
6100 RETURN 
6110 ! "W" 



li' TRANSFER S$ TO 



I 
I 
I 
I 
I 



1$="" li' GOTO 5 
I* li' 1$="" li' GO 



5820 
5830 
5340 
5350 
5360 
5870 
5330 
5390 
5900 
59 1 
5920 
5930 
5940 
5950 
5960 
5970 
5980 
5990 



GOTO 2470 

; 4ii' H,L5,C4=0 



li' L5=l li' GOTO 5400 



li' RETURN 



-nrnrifwnnnnnnnnnniiB 



88 

6120 IF POS( "0123456789", L$CL+l,L+i:)=0 THEN ON SGN(L)+1 GOTO 6100,6030 

6130 IF L=0 THEN RETURN ELSE L8=VAL (L*EL+1 , L+1 J) i? L=L+2 

6140 IF L8=0 THEN L8=10 

6150 IF L=0 THEN RETURN ELSE ON TIMER# 3,L8*1000 GOSUB 6160 i? L0=0 i? RETURN 

6160 OFF TIMER# 3 i? L0=1 r? RETURN 

6170 ! "E" 

6180 IF L=0 THEN RETURN ELSE L=L+1 i? K*=K$S<L9S i? L0=1 I? K=LEN(K*) U GOSUB 2490 i±' 

RETURN 

6185 IF L=0 THEN RETURN ELSE L=L+1 i? RETURN ! " " 

6190 GOTO 7400 

6200 K4=LEN(B1«) 

6210 K:4=15*K1-K4 

6220 FOR J=l TO KA 

6230 B1$=B1$S<" " 

6240 NEXT J 

6245 K1=K1+1 

6250 RETURN 

7000 k:i = i 

7010 read# 1,2 ; y, d2, t2, d3, t3 

7020 B1$=VAL$(Y) 

7030 GOSUB 6200 

7040 B1*=B1*S<VAL$(D2)&". " 

7050 GOSUB 6200 

7060 Bi*=Bl*S<VAL$(T2) 

7070 GOSUB 6200 

7080 B 1 *=B 1 $S.:VAL* ( D3 ) ?< " . " 

7090 GOSUB 6200 

7100 B1$=B1*S<VALS(T3)S<L9* 

7110 GOSUB 3430 

7115 J7=l 

7116 IF J7>Y THEN 3680 

7130 READ# l,J7+2 ; T, D, Fl ( ) , D4 ( ) 

7140 Kl=l 

7150 B1*=VAL$(D)S.". " 

7160 GOSUB 6200 

7170 B1$=B1*?<VAL$(T)S«L9« 

7130 GOSUB 3430 

7185 K3=l 

7190 FOR K2=l TO 16 

7200 k;i = i 

7210 Bl*="" 

7220 FOR K=l TO 2 

7230 B1$=B1«&VAL*(D4(K3) )&". " 

7240 GOSUB 6200 

7250 B1*=B1*.'?<VAL*(F1 (K3) ) 

7260 GOSUB 6200 

7270 K3=K3+1 

7280 NEXT K 

7290 B1S=B1*.1'L9« 

7300 GOSUB 3430 

7310 NEXT K2 

7320 J7=J7+1 

7321 GOTO 7116 
7400 END 



■si-U.S.GPO; 1985-605-017/20,144 in t.- bu.o f min es,pgh.,p a. 28 I69 



iMnifMinfi f i fmnf ii M 



■"""■"""■"'"'"'""'"""''"'MMi^MMI I MI Ii m i M 



HMHH^HIHH 



U.S. Department of the Interior 
Bureau of Mines— Prod, and Distr. 
Cochrans Mill Road 
P.O. Box 18070 
Pittsburgh, Pa. 15236 



AN EQUAL OPPORTUNITY EMPLOYER 



POSTAGE AND FEES PAID 

U.S. DEPARTMENT OF THE INTERIOR 

INT-416 



OFFICIAL BUSINESS 
PENALTY FOR PRIVATE USE. $300 

I 1 Do not wl sh to recei ve thi s 
material, please remove 
from your mailing list. 

I I Address change. Please 
correct as indicated* 



W 153 86 
















.4^ .. 












v-o^ 



'bK 



v-o^ 



'oK 











0^ \5 */7;s 





\. /.'j^>A .^^\c:^/^'e. Z.^^i^.'^ 



• • 5 \ ' 




























A,'o t<^ /^ »*l^fei". *>^ 1-^ 



,h 











■J^^r. 




•{ o 







• "'^j^ A*^ *• 









./"-*. 



<^. 






A^ , w ' » ^ >^ 






^AO^ 



'^^ * o « o -^ ^ 

r« "^ ^^ 




/ \-!^^A^ %-'o<^i^\G^^ V*^ 




v-o^ 



J.- ^^»^^_,^ ■'^^,^- oV^^^a'- '^bv^' -'.^^^^'. ■"•^^.^^ o-^*^^^!^'-. V..-^ 



* ^-^^ 




4 o 

• "^ A?' ^J^:^^" <^ «i ^ft'?!.^,,*^ "^ AT *■ 





,G^ %b ^.-T.** v'^ ^ 



A .'■"'. 



Y^^ 



'>bv^' ^'M^^\ ^^Mc^' ^^^&k^ -^^^^ '^mm>^\ ^^M^^ 



> .0^ 




^AO^ 







bV 



3s? -7% 




'>o^ 








\ /' /.M^ ^%/^ ^^lfe"» x/' »»' ^\/^ «», \/ 






'^<^, 



.V 











-ov^ :^^'^ '^^0^ r^'^a': -ov^^ 







^^^'% '^^/ /\ ^'^/ ^^'\ '^S /\ ~- 





^'■ 




V 














'^ * o « •^ -^ 













'^0^ 


















•^^ . 







':^o^ 






h' 
























„ ■•' <5,^ 




'bV" 




^4- 

"V * . o - 0,> 

J" \, '^ 



.^ 






O" O, 















V 



\^ 












t? .0 ..s ' • /■ ■■ 

y\ "-IP.- /\ 



.j5°*> 







« 












^,> 




'^bV^' :^m^^\ '^^r<i o^^^^X^ ^^.-iy' 












4 o 

'0- <<^ 



A' 



'v^O^ 









<. 'or.' ,G^ ^o 






HECKMAN 

BINDERY INC. 




J UN 86 

N. MANCHESTER, 
INDIANA 46962 




0-2^. 












<^. 








"^t 






-^^.^ 



K^ 



40^ 




